**************************************************************************************
	;Header frs File-linken

	IFD	Flag_project
Flag_extras	set 1
	ENDC
	IFND	Flag_extras
Flag_extras	set 0
	ENDC
	IFEQ	Flag_extras
Flag_extras	set 1
	include	Nutz_project
	ELSEIF
**************************************************************************************
*-------------------------------------------------------------------------------------
*---------------	Info Table for Hearts
*-------------------------------------------------------------------------------------
Extra_I_Heart:	dc.l	Heart_Rout
		dc.w	16,16
		dc.l	Heart_Anim
		dc.w	0,12
		dc.b	0,BOB_HI_PRIO
Extra_I_OneUp:	dc.l	OneUp_Rout
		dc.w	16,16
		dc.l	OneUp_Anim
		dc.w	0,50
		dc.b	0,BOB_HI_PRIO
Extra_I_Bomb:	dc.l	Bomb_Rout
		dc.w	16,16
		dc.l	Bomb_Anim
		dc.w	0,50
		dc.b	0,BOB_HI_PRIO

Extra_I_Shield:	dc.l	Shield_Rout
		dc.w	16,16
		dc.l	Shield_Anim
		dc.w	0,50
		dc.b	0,BOB_HI_PRIO
Extra_I_ShieldT:	dc.l	ShieldT_Rout
		dc.w	16,16
		dc.l	ShieldT_Anim
		dc.w	0,50
		dc.b	0,BOB_HI_PRIO

Extra_I_Gem1:	dc.l	Gem1_Rout
		dc.w	16,16
		dc.l	Gem1_Anim
		dc.w	5,2
		dc.b	0,BOB_MID_PRIO
Extra_I_Gem2:	dc.l	Gem2_Rout
		dc.w	16,16
		dc.l	Gem2_Anim
		dc.w	4,2
		dc.b	0,BOB_MID_PRIO

Extra_Hitpoint_NF:	dc.l	I_Hitpoint_NF
		dc.w	16,16
		dc.l	HitPoint_Fall_Anim
		dc.w	0,8
		dc.b	0,BOB_HI_PRIO
Extra_Hitpoint:	dc.l	HitPoint_Rout_1
		dc.w	16,16
		dc.l	HitPoint_Fall_Anim
		dc.w	0,8
		dc.b	0,BOB_HI_PRIO

Extra_I_Smoke_X:	dc.l	I_Handle_Smoke_X
		dc.w	32,32
		dc.l	Smoke_Anim
		dc.w	0,20
		dc.b	0,BOB_MID_PRIO
Extra_I_Smoke_Y:	dc.l	I_Handle_Smoke_Y
		dc.w	32,32
		dc.l	Smoke_Anim
		dc.w	0,20
		dc.b	0,BOB_MID_PRIO

Extra_I_Aufl:	dc.l	Aufl_Rout
		dc.w	16,16
		dc.l	Aufl_Anim
		dc.w	0,7
		dc.b	0,BOB_MID_PRIO

S_EXTRALAMP_I:	dc.l	Lamp_Rout
		dc.w	16,32
		dc.l	Lamp_Wait_AnimWa
		dc.w	0,8
		dc.b	BACK_ANIM,BOB_MID_PRIO

S_EXTRAK_Wa_I:	dc.l	Extra_Rout_InitWa
		dc.w	48,32
		dc.l	Extra_Wait_AnimWa
		dc.w	0,$8
		dc.b	BACK_ANIM,BOB_MID_PRIO
S_EXTRAK_Un_I:	dc.l	Extra_Rout_InitUn
		dc.w	48,32
		dc.l	Extra_Wait_AnimUn
		dc.w	0,$8
		dc.b	BACK_ANIM,BOB_MID_PRIO
S_EXTRAK_Te_I:	dc.l	Extra_Rout_InitTe
		dc.w	48,32
		dc.l	Extra_Wait_AnimTe
		dc.w	0,$8
		dc.b	BACK_ANIM,BOB_MID_PRIO
S_EXTRAK_Na_I:	dc.l	Extra_Rout_InitNa
		dc.w	48,32
		dc.l	Extra_Wait_AnimNa
		dc.w	0,$8
		dc.b	BACK_ANIM,BOB_MID_PRIO
S_EXTRAK_In_I:	dc.l	Extra_Rout_InitIn
		dc.w	48,32
		dc.l	Extra_Wait_AnimIn
		dc.w	0,$8
		dc.b	BACK_ANIM,BOB_MID_PRIO

**************************************************************************************
S_KEYPOINT_I:
		dc.l	Key_Rout
		dc.w	16,32
		dc.l	0
		dc.w	0,8
		dc.b	0,BOB_MID_PRIO

**************************************************************************************

Key_Rout:
		jmp	Out_Bob_Damage
;		moveq	#0,d2
;		move.w	#Extras_VRam/32,d3
;		lea	Extra_Obj_28,a0
;		jsr	Show_Simple_Object
;		rts


**************************************************************************************

Display_Exit:
		move.w	Exit_X_Pos(a6),d0		;Display clippen
		and.w	#$7fff,d0
		add.w	#128,d0
		sub.w	Scr_X_Level_Pos(a6),d0

		cmp.w	#DISPLAY_X_START,d0
		blt	.NoDisplay
		cmp.w	#DISPLAY_X_END,d0
		bgt	.NoDisplay

		move.w	Exit_Y_Pos(a6),d1
		add.w	#128,d1
		sub.w	Scr_Y_Level_Pos(a6),d1

		;Clippen der Darstellung

		cmp.w	#DISPLAY_Y_START,d1
		blt.s	.NoDisplay
		cmp.w	#DISPLAY_Y_END,d1
		bgt.s	.NoDisplay

		subq.b	#1,Exit_AnVerz(a6)		;Animation fahren
		bpl.s	.no_anim
		move.b	#10,Exit_AnVerz(a6)
		not.b	Exit_AnPos(a6)
.no_anim:
		moveq	#0,d2				;Objekt anzeigen.
		lea	Extras3_raw,a0

		lea	Extra2_Obj_0,a5
		lea	Extra_Obj_28,a1
		tst.b	Exit_AnPos(a6)
		beq.s	.show_0
		lea	Extra2_Obj_1,a5
		lea	Extra_Obj_29,a1
.show_0:
		tst.w	Glo_Kette(a6)
		bmi.s	.no_keypoint
		moveq	#0,d2
		move.w	#Extras_VRam/32,d3
		move.l	a1,a0
		sub.w	#15,d1
		add.w	#16,d0
		jsr	Add_Simple_Sigel
		rts
.no_keypoint:
		move.l	a5,a0
		moveq	#0,d2
		move.w	#Flames_VRam/32,d3
		jsr	Add_Simple_Sigel
.NoDisplay:
		rts


EBASE	EQU	$6000

Extra_Obj_0:
  dc.w $8010
  dc.w $0500
  dc.w CBASE+$0000
  dc.b 0
  dc.b 0
  dc.w -1
Extra_Obj_1:
  dc.w $8010
  dc.w $0500
  dc.w CBASE+$0004
  dc.b 0
  dc.b 0
  dc.w -1
Extra_Obj_2:
  dc.w $8010
  dc.w $0500
  dc.w CBASE+$0008
  dc.b 0
  dc.b 0
  dc.w -1
Extra_Obj_3:
  dc.w $8010
  dc.w $0500
  dc.w CBASE+$000C
  dc.b 0
  dc.b 0
  dc.w -1
Extra_Obj_4:
  dc.w $8010
  dc.w $0500
  dc.w CBASE+$0010
  dc.b 0
  dc.b 0
  dc.w -1
Extra_Obj_5:
  dc.w $8010
  dc.w $0500
  dc.w CBASE+$0014
  dc.b 0
  dc.b 0
  dc.w -1
Extra_Obj_6:
  dc.w $8010
  dc.w $0500
  dc.w CBASE+$0018
  dc.b 0
  dc.b 0
  dc.w -1
Extra_Obj_7:
  dc.w $8010
  dc.w $0500
  dc.w CBASE+$001C
  dc.b 0
  dc.b 0
  dc.w -1
Extra_Obj_8:
  dc.w $8010
  dc.w $0500
  dc.w CBASE+$0020
  dc.b 0
  dc.b 0
  dc.w -1
Extra_Obj_9:
  dc.w $8010
  dc.w $0500
  dc.w CBASE+$0024
  dc.b 0
  dc.b 0
  dc.w -1
Extra_Obj_10:
  dc.w $e010
  dc.w $0100
  dc.w CBASE+$0028
  dc.b 4
  dc.b 0
  dc.w -1
Extra_Obj_11:
  dc.w $e010
  dc.w $0500
  dc.w CBASE+$002A
  dc.b 0
  dc.b 0
  dc.w -1
Extra_Obj_12:
  dc.w $e010
  dc.w $0500
  dc.w CBASE+$002E
  dc.b 0
  dc.b 0
  dc.w -1
Extra_Obj_13:
  dc.w $e010
  dc.w $0100
  dc.w CBASE+$0032
  dc.b 4
  dc.b 0
  dc.w -1
Extra_Obj_14:
  dc.w $e010
  dc.w $0100
  dc.w CBASE+$0034
  dc.b 4
  dc.b 0
  dc.w -1
Extra_Obj_15:
  dc.w $e010
  dc.w $0100
  dc.w CBASE+$0036
  dc.b 4
  dc.b 0
  dc.w -1
Extra_Obj_16:
  dc.w $e010
  dc.w $0500
  dc.w CBASE+$0038
  dc.b 0
  dc.b 0
  dc.w -1
Extra_Obj_17:
  dc.w $e010
  dc.w $0500
  dc.w CBASE+$003C
  dc.b 0
  dc.b 0
  dc.w -1
Extra_Obj_18:
  dc.w $e010
  dc.w $0100
  dc.w CBASE+$0040
  dc.b 4
  dc.b 0
  dc.w -1
Extra_Obj_19:
  dc.w $e010
  dc.w $0500
  dc.w CBASE+$0042
  dc.b 0
  dc.b 0
  dc.w -1
Extra_Obj_20:
  dc.w $e010
  dc.w $0500
  dc.w CBASE+$0046
  dc.b 0
  dc.b 0
  dc.w -1
Extra_Obj_21:
  dc.w $8010
  dc.w $0500
  dc.w CBASE+$004A
  dc.b 0
  dc.b 0
  dc.w -1
Extra_Obj_22:
  dc.w $8010
  dc.w $0500
  dc.w CBASE+$004E
  dc.b 0
  dc.b 0
  dc.w -1
Extra_Obj_23:
  dc.w $8010
  dc.w $0500
  dc.w CBASE+$0052
  dc.b 0
  dc.b 0
  dc.w -1
Extra_Obj_24:
  dc.w $8010
  dc.w $0500
  dc.w CBASE+$0056
  dc.b 0
  dc.b 0
  dc.w -1
Extra_Obj_25:
  dc.w $8010+$6000
  dc.w $0500
  dc.w CBASE+$005A
  dc.b 0
  dc.b 0
  dc.w -1
Extra_Obj_26:
  dc.w $8010+$6000
  dc.w $0500
  dc.w CBASE+$005E
  dc.b 0
  dc.b 0
  dc.w -1
Extra_Obj_27:
  dc.w $8010+$6000
  dc.w $0500
  dc.w CBASE+$0062
  dc.b 0
  dc.b 0
  dc.w -1

Extra_Obj_28:
  dc.w $e010
  dc.w $0500
  dc.w CBASE+$0066
  dc.b 0
  dc.b 0
  dc.w $0200
  dc.w CBASE+$006A
  dc.b 6
  dc.b 16
  dc.w $0600
  dc.w CBASE+$0070
  dc.b 0
  dc.b 40
  dc.w -1

Extra_Obj_29:
  dc.w $e010
  dc.w $0500
  dc.w CBASE+$0066
  dc.b 0
  dc.b 0
  dc.w $0200
  dc.w CBASE+$006D
  dc.b 6
  dc.b 16
  dc.w $0600
  dc.w CBASE+$0070
  dc.b 0
  dc.b 40
  dc.w -1

Extra2_Obj_0:
  dc.w $8040
  dc.w $0D00
  dc.w CBASE+$0030
  dc.b 0
  dc.b 5
  dc.w $0D00
  dc.w CBASE+$0038
  dc.b 32
  dc.b 5
  dc.w $0C00
  dc.w CBASE+(Exit2_VRam-Flames_VRam)/32
  dc.b 0
  dc.b 0
  dc.w $0C00
  dc.w CBASE+(Exit2_VRam-Flames_VRam)/32+4
  dc.b 32
  dc.b 0
  dc.w $0C00
  dc.w CBASE+(Exit2_VRam-Flames_VRam)/32
  dc.b 0
  dc.b 22
  dc.w $0C00
  dc.w CBASE+(Exit2_VRam-Flames_VRam)/32+4
  dc.b 32
  dc.b 22

  dc.w -1
Extra2_Obj_1:
  dc.w $8040
  dc.w $0D00
  dc.w CBASE+$0040
  dc.b 0
  dc.b 5
  dc.w $0D00
  dc.w CBASE+$0048
  dc.b 32
  dc.b 5
  dc.w $0C00
  dc.w CBASE+(Exit2_VRam-Flames_VRam)/32
  dc.b 0
  dc.b 0
  dc.w $0C00
  dc.w CBASE+(Exit2_VRam-Flames_VRam)/32+4
  dc.b 32
  dc.b 0
  dc.w $0C00
  dc.w CBASE+(Exit2_VRam-Flames_VRam)/32
  dc.b 0
  dc.b 22
  dc.w $0C00
  dc.w CBASE+(Exit2_VRam-Flames_VRam)/32+4
  dc.b 32
  dc.b 22

  dc.w -1
Extra2_Obj_2:
  dc.w $8020
  dc.w $0F00
  dc.w CBASE+$0000
  dc.b 0
  dc.b 0
  dc.w -1
Extra2_Obj_3:
  dc.w $8020
  dc.w $0F00
  dc.w CBASE+$0010
  dc.b 0
  dc.b 0
  dc.w -1
Extra2_Obj_4:
  dc.w $8020
  dc.w $0F00
  dc.w CBASE+$0020
  dc.b 0
  dc.b 0
  dc.w -1

**************************************************************************************
*-------------------------------------------------------------------------------------
*---------------	EXTRA Routs
*-------------------------------------------------------------------------------------
Extra_Y_Speed	=Bob_Koords_Save1	;LW
Extra_X_Speed	=Bob_Koords_Save2	;LW
Extra_On_Ground	=Bob_Special_4	;B
Extra_Counter	=Bob_Special_4+1	;B
Extra_Init_Rout	=Bob_Special_1	;LW (S1,S2)
*-------------------------------------------------------------------------------------
Extra_Rout_Falling	*--*>Call Blink Rout
		move.l	Extra_Init_Rout(a4),a0
		jsr	(a0)
		*--*>Make Luftwiederstand
		tst.l	Extra_X_Speed(a4)
		beq.s	.Make_Y_Speed
		*--Test Sub or add
		bpl.s	.Sub_X_Speed
.Add_X_Speed	*--Add
		moveq	#0,d2
		add.l	#$00001000,Extra_X_Speed(a4)
		bra.s	.Test_X_Kolli
.Sub_X_Speed	*--Sub
		moveq	#16,d2
		sub.l	#$00001000,Extra_X_Speed(a4)
.Test_X_Kolli	move	Bob_X_Position(a4),d0
		add	d2,d0
		move	Bob_Y_Position(a4),d1
		addq	#8,d1
		jsr	Get_Block_Bits
		swap	d0
		btst	#SCR_KOLLISION_BIT,d0
		beq.s	.Make_Y_Speed
		neg.l	Extra_X_Speed(a4)
.Make_Y_Speed	*--*>Make Falling
		tst.b	Extra_On_Ground(a4)
		beq.s	.FallDown
		rts
.FallDown		add.l	#$00004000,Extra_Y_Speed(a4)
		*--Test ob Decke oder Boden
		moveq	#16,d2
		tst.l	Extra_Y_Speed(a4)
		bpl.s	.Down_Kolli
.Up_Kolli		moveq	#0,d2
.Down_Kolli		move	Bob_X_Position(a4),d0
		addq	#8,d0
		move	Bob_Y_Position(a4),d1
		add	d2,d1
		jsr	Get_Block_Bits
		add	d0,d0
		add	d0,d0
		move.l	Scr_Block_EntryAdrs(a6),a1
		move.l	(a1,d0),a1
		cmp.b	#swand,Block_Through(a1)
		beq.s	.CheckDeckeorGround
		cmp.b	#boden,Block_Through(a1)
		bne.s	.Add_Speeds

.CheckDeckeorGround	tst.l	Extra_Y_Speed(a4)
		bpl.s	.Ground_Kolli
.Decke_Kolli	addq	#2,Bob_Y_Position(a4)
		move.l	Extra_Y_Speed(a4),d0
		asr.l	#1,d0
		neg.l	d0
		move.l	d0,Extra_Y_Speed(a4)
		bra.s	.Add_Speeds
.Ground_Kolli	*--Kolli with Ground
		cmp	#1,Extra_Y_Speed(a4)
		bne.s	.NoMake
.MakeBouncOff	move.b	#1,Extra_On_Ground(a4)
		rts
.NoMake		move.l	Extra_Y_Speed(a4),d0
		asr.l	#2,d0
		neg.l	d0
		move.l	d0,Extra_Y_Speed(a4)
.Add_Speeds	*--*>Add Speeds
		move	Extra_X_Speed(a4),d0
		add	d0,Bob_X_Position(a4)
		move	Extra_Y_Speed(a4),d0
		add	d0,Bob_Y_Position(a4)
		rts
**************************************************************************************
*-------------------------------------------------------------------------------------
*---------------	HEART
*-------------------------------------------------------------------------------------
Heart_Anim:	dc.w	0
		dc.l	Extra_Obj_1
		dc.w	0,0
		dc.w	0
		dc.l	Extra_Obj_2
		dc.w	0,0
		dc.w	ENTRY_END
		dc.l	Heart_Anim
*-----------------------------------------------------------------------------------
Heart_Collect	=Extra_On_Ground
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Heart_Rout		*--*>Heart_Rout
		cmp.b	#2,Heart_Collect(a4)
		bhs.s	.Heart_Collected
		jsr	Standart_BobAnim
		jsr	Test_TEMET_Hit
		cmp.b	#BOB_FALSE,Bob_Used(a4)
		bne	.NoClearExtra
		*--*>Init HP COME
		move.b	#BOB_TRUE,Bob_Used(a4)
		clr.l	Extra_X_Speed(a4)
		move.b	#2,Heart_Collect(a4)
		move.b	#10,Extra_Counter(a4)
		lea	(a6),a2
		move.b	TEMET_MAX_HitPoints(a2),d0 
		sub.b	TEMET_ANZ_HitPoints(a2),d0
		add.b	d0,Heart_Collect(a4)
		IFEQ	SOUNDFX
		moveq	#22,d0
		jsr	TFMX+16
		ENDC
		rts
.NoClearExtra	*--*>TestBobOut
		jsr	Test_Bob_Out
		bra	Show_Extra
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Heart_Collected	*--*>Test if TEMET has all Hitpoints
		move.b	Heart_Collect(a4),d0
		subq.b	#2,d0
		beq.s	.OutHeart
		subq.b	#1,Extra_Counter(a4)
		bne.s	.Weg
		*--*>Enter HP
		subq.b	#1,Heart_Collect(a4)
		move.b	#10,Extra_Counter(a4)
		move	#HITPOINT,d0
		lea	Area_Enter_Vector(a6),a1
		lea	(a6),a2
		move	TEMET_X_Position(a2),d1
		addq	#8,d1
		move	TEMET_Y_Position(a2),d2
		addq	#8,d2
		jsr	Search_Bob_Entry
		tst	d0
		bmi.s	.Weg
		move.b	#25,HitPoint_Fly_Back(a4)
.Weg		rts
.OutHeart	jsr	Out_Bob_Damage
		rts
*-------------------------------------------------------------------------------------
*---------------	ONE UP
*-------------------------------------------------------------------------------------
OneUp_Anim:	dc.w	0
		dc.l	Extra_Obj_0
		dc.w	0,0
		dc.l	OneUp_Anim
*-----------------------------------------------------------------------------------
OneUp_Rout		*--*>One_Up_Rout
		move.w	#300+32,Bob_Out_Y_Val(a4)
		moveq	#17,d6	;#17
		jsr	HandleExtra
		tst	d7
		beq.s	.Ende
		moveq	#1,d0
		jsr	AddLifes
.Ende		jsr	Show_Extra
		rts
*-------------------------------------------------------------------------------------
*---------------	ONE UP
*-------------------------------------------------------------------------------------
Bomb_Anim:	dc.w	0
		dc.l	Extra_Obj_3
		dc.w	0,0
		dc.l	Bomb_Anim
*-----------------------------------------------------------------------------------
Bomb_Rout		*--*>One_Up_Rout
		move.w	#300+32,Bob_Out_Y_Val(a4)
		moveq	#18,d6	;#18
		jsr	HandleExtra
		tst	d7
		beq.s	.Ende
		moveq	#1,d0
		jsr	AddBombs
.Ende		jsr	Show_Extra
		rts
*-------------------------------------------------------------------------------------
*---------------	SHIELD
*-------------------------------------------------------------------------------------
Shield_Anim:	dc.w	0
		dc.l	Extra_Obj_4
		dc.w	0,0
		dc.l	Shield_Anim
*-----------------------------------------------------------------------------------
Shield_Rout		*--*>One_Up_Rout
		move.w	#300+32,Bob_Out_Y_Val(a4)
		moveq	#20,d6	;#20
		jsr	HandleExtra
		tst	d7
		beq.s	.Ende
		cmp	#3,TEMET_Shield_Flag(a6)
		bne	.NormTest
		tst	TEMET_Shield_Save(a2)
		bne.s	.Ende
		move	#1,TEMET_Shield_Save(a6)
		bra	.Ende
.NormTest	cmp	#2,TEMET_Shield_Flag(a6)
		bne.s	.NoSuchThings
		move	#1,TEMET_Shield_Save(a6)
		bra.s	.Ende
.NoSuchThings	move	#1,TEMET_Shield_Flag(a6)
		move	#-1,TEMET_Been_HitTimer(a6)

.Ende		jsr	Show_Extra
		rts
*-------------------------------------------------------------------------------------
*---------------	SHIELDT
*-------------------------------------------------------------------------------------
ShieldT_Anim:	dc.w	0
		dc.l	Extra_Obj_5
		dc.w	0,0
		dc.l	ShieldT_Anim
*-----------------------------------------------------------------------------------
ShieldT_Rout	*--*>One_Up_Rout
		move.w	#300+32,Bob_Out_Y_Val(a4)
		moveq	#19,d6	;#19
		jsr	HandleExtra
		tst	d7
		beq.s	.Ende
		cmp	#3,TEMET_Shield_Flag(a6)
		bne	.NormTest
		move	#2,TEMET_Shield_Save(a6)
		bra	.Ende
.NormTest		cmp	#1,TEMET_Shield_Flag(a6)
		bne.s	.NoSuchThings
		move	#1,TEMET_Shield_Save(a6)
.NoSuchThings	move	#2,TEMET_Shield_Flag(a6)
		move	#12*60,TEMET_Been_HitTimer(a6)

.Ende		jsr	Show_Extra
		rts
**************************************************************************************
*-------------------------------------------------------------------------------------
*---------------	GEM1
*-------------------------------------------------------------------------------------
Gem_Y_Speed		=Bob_Koords_Save1	;LW
Gem_X_Speed		=Bob_Koords_Save2	;LW
Gem_Make_Blink_Cnt	=Bob_Special_3+1	;B
Gem_Which_Col		=Bob_Special_3		;B
Gem_On_Ground		=Bob_Special_4		;B
*-------------------------------------------------------------------------------------
Gem1_Rout:	jsr	Standart_BobAnim
		moveq	#21,d6			;SoundEffekt #
		jsr	HandleExtra
		bne.s	.gem_was_collected

		*--*>Test init Blink
		tst.b	Gem_Make_Blink_Cnt(a4)
		beq.s	Make_new_Blink_Tme
		*--Test Make Blink
		subq.b	#1,Gem_Make_Blink_Cnt(a4)
		bne.s	.GoBack
		move.l	#Gem1_AnimBlnk,Bob_Next_Anim(a4)
.GoBack		bra	Show_Gem

.gem_was_collected:
		moveq	#1,d0
		jmp	AddGems

Make_new_Blink_Tme	*--*>Make New Blink Time
		jsr	Get_Zuffi_d2
		and	#15,d2
		lsl.w	#5,d2
		move.b	d2,Gem_Make_Blink_Cnt(a4)
		bra	Show_Gem
*-------------------------------------------------------------------------------------
Gem1_Anim:	dc.w	0
		dc.l	Extra_Obj_6,0
		dc.w	ENTRY_END
		dc.l	Gem1_Anim
Gem1_AnimBlnk:	dc.w	0
		dc.l	Extra_Obj_7,0
		dc.w	0
		dc.l	Extra_Obj_8,0
		dc.w	0
		dc.l	Extra_Obj_9,0
		dc.w	0
		dc.l	Extra_Obj_9,0
		dc.w	0
		dc.l	Extra_Obj_8,0
		dc.w	0
		dc.l	Extra_Obj_7,0
		dc.w	ENTRY_END
		dc.l	Gem1_Anim
*-------------------------------------------------------------------------------------
*---------------	GEM2
*-------------------------------------------------------------------------------------
Gem2_Rout:	jsr	Standart_BobAnim
		moveq	#21,d6	;#21
		jsr	HandleExtra
		bne.s	.gem_was_collected

		*--*>Test init Blink
		tst.b	Gem_Make_Blink_Cnt(a4)
		beq	Make_new_Blink_Tme
		*--Test Make Blink
		subq.b	#1,Gem_Make_Blink_Cnt(a4)
		bne.s	.GoBack
		move.l	#Gem2_AnimBlnk,Bob_Next_Anim(a4)
.GoBack		bra	Show_Gem

.gem_was_collected:
		moveq	#1,d0
		jmp	AddGems
*-------------------------------------------------------------------------------------
Gem2_Anim:	dc.w	0
		dc.l	Extra_Obj_21,0
		dc.w	ENTRY_END
		dc.l	Gem2_Anim
Gem2_AnimBlnk:	dc.w	0
		dc.l	Extra_Obj_22,0
		dc.w	0
		dc.l	Extra_Obj_23,0
		dc.w	0
		dc.l	Extra_Obj_24,0
		dc.w	0
		dc.l	Extra_Obj_24,0
		dc.w	0
		dc.l	Extra_Obj_23,0
		dc.w	0
		dc.l	Extra_Obj_22,0
		dc.w	ENTRY_END
		dc.l	Gem2_Anim
*-------------------------------------------------------------------------------------
GemVram_Under:		dc.w	Extras_VRam/32+$2000,Extras_VRam/32+$2000
			dc.w	Extras_VRam/32+$0000,Extras_VRam/32+$2000

GemVram_Default:	dc.w	Extras_VRam/32+$2000,Extras_VRam/32
			dc.w	Extras_VRam/32+$6000,Extras_VRam/32+$2000

GemVram_Nature:		dc.w	Extras_VRam/32+$6000,Extras_VRam/32
			dc.w	Extras_VRam/32,Extras_VRam/32

GemVram_Tekkno:		dc.w	Extras_VRam/32,Extras_VRam/32+$2000
			dc.w	Extras_VRam/32+$6000,Extras_VRam/32

GemVram_Sky:		dc.w	Extras_VRam/32+$2000,Extras_VRam/32
			dc.w	Extras_VRam/32+$6000,Extras_VRam/32

GemVram_Water:		dc.w	Extras_VRam/32+$6000,Extras_VRam/32+$2000
			dc.w	Extras_VRam/32,Extras_VRam/32
*-------------------------------------------------------------------------------------
Show_Gem:	*--*>Test Which Show Rout
		jsr	Check_Object_Borders
		beq.s	.NoDisplay
		move.w	Bob_Number(a4),d3
		subq.w	#GEMC1,d3
		add.w	d3,d3
		move.l	GemVramAdrs(a6),a0
		move.w	(a0,d3),d3
		moveq	#0,d2
		move.l	Bob_SigelInfo(a4),a0
		jsr	Add_Simple_Sigel

.NoDisplay:	rts

**************************************************************************************
*-------------------------------------------------------------------------------------
*---------------	HITPOINTS
*-------------------------------------------------------------------------------------
HitPoint_Rout		=Bob_Special_1		;B
HitPoint_X_Stop		=Bob_Special_1+1	;B
HitPoint_X_Speed	=Bob_Special_2		;W
HitPoint_Y_Speed	=Bob_Koords_Save1	;LW
HitPoint_Y_Acce		=Bob_Koords_Save2	;LW
HitPoint_Wait		=Bob_Special_3		;B
HitPoint_Fly_Back	=Bob_Special_3+1	;B
HitPoint_Save_Y		=Bob_Special_4		;B
HitPoint_Play_SFX	=Bob_Hit		;B
HitPoint_Fall_X_Dest	=Bob_Plane_Order	;W
HitPoint_Fall_Y_Dest	=Bob_Plane_Order+2	;W
*-------------------------------------------------------------------------------------
HP_PLAY_VERZ	=17
*-------------------------------------------------------------------------------------
HP_X_MIDDLE	=8
HP_X_RIGHT	=16
HP_Y_MIDDLE	=8
HP_Y_BOTTOM	=16
*-------------------------------------------------------------------------------------
HP_FALLROUT	=1
HP_WAITROUT	=2
HP_PANIC_AREA	=50
HP_ATTENTION_AREA	=90
HP_NORMAL_AREA	=130
HP_KICHER_AREA	=320
HP_PANIC_VAL	=8
HP_ATTENTION_VAL	=6
HP_NORMAL_VAL	=5
HP_KICHER_VAL	=3
*-------------------------------------------------------------------------------------
HP_Bump1.GFX	=Extra_Obj_10
HP_Bump2.GFX	=Extra_Obj_11
HP_Bump3.GFX	=Extra_Obj_12
HP_Blink1.GFX	=Extra_Obj_13
HP_Blink2.GFX	=Extra_Obj_14
HP_Blink3.GFX	=Extra_Obj_15
HP_Wank1.GFX	=Extra_Obj_16
HP_Wank2.GFX	=Extra_Obj_17
HP_Wank3.GFX	=Extra_Obj_18
HP_Wank4.GFX	=Extra_Obj_19
HP_Wank5.GFX	=Extra_Obj_20
**************************************************************************************
*-------------------------------------------------------------------------------------
I_Hitpoint_NF	*--*>Init HitPoint NoFalling
		move.w	#180,Bob_Out_X_Val(a4)
		move.w	#200+32,Bob_Out_Y_Val(a4)
		move.b	#HP_FALLROUT,HitPoint_Rout(a4)
		move	#1,HitPoint_X_Speed(a4)
		clr.l	HitPoint_Y_Speed(a4)
		move.l	#$00002000,HitPoint_Y_Acce(a4)
		clr.b	HitPoint_Fly_Back(a4)	;--Fly hin Val setzen
		move.l	#HitPoint_Rout_1,Bob_Routine(a4)
		move	#HITPOINT,Bob_Number(a4)
		rts
**************************************************************************************
*-------------------------------------------------------------------------------------
HitPoint_Rout_1	*--Standart-Routinen
		tst.b	HitPoint_Play_SFX(a4)
		beq.s	.NoSUB
		subq.b	#1,HitPoint_Play_SFX(a4)
.NoSUB		jsr	Standart_BobAnim
		*--Test if HP should fly back
		tst.b	HitPoint_Fly_Back(a4)
		beq	.No_Fly_Back
		*--HP fly Back make Blink
		;move	#COLOUR,Bob_Race(a4)
		;tst.b	Akt_Copper_Frame(a6)
		;beq.s	.okCols
		;move	#NORMAL,Bob_Race(a4)
.okCols		*--*>Hin oder herfliegen
		tst.b	HitPoint_Fly_Back(a4)
		bpl.s	.Fly_Back
.Fly_Hin	*--*>Ohne Kollisions hinfliegen
		*--Speeds berechnen und auf Koords addieren
		move	HitPoint_X_Speed(a4),d0
		lea	(a6),a2
		cmp.b	#4,TEMET_ANZ_HitPoints(a2)
		bhs.s	.NoMore
		tst.b	Akt_Copper_Frame(a6)
		beq.s	.NoMore
		addq	#1,d0
.NoMore		add	d0,Bob_X_Position(a4)
		move.l	HitPoint_Y_Acce(a4),d0
		add.l	d0,HitPoint_Y_Speed(a4)
		move	HitPoint_Y_Speed(a4),d0
		add	d0,Bob_Y_Position(a4)
		*--*>Test ob Temet in Y Nhe
		lea	(a6),a2
		move	Bob_Y_Position(a4),d1
		sub	HitPoint_Save_Y(a4),d1
		bmi.s	.Fly_Hin_End
		clr.b	HitPoint_Fly_Back(a4)		
		move	#NORMAL,Bob_Race(a4)
.Fly_Hin_End	bsr	Show_Extra
		rts
.Fly_Back	*--*>Differenz der Source und Dest Position berechnen
		lea	(a6),a2
 		moveq	#0,d0
		moveq	#0,d1
		moveq	#0,d3
		move	Bob_X_Position(a4),d0
		move	Bob_Y_Position(a4),d1
		move	Scr_X_Level_Pos(a6),d2
		move.b	TEMET_ANZ_HitPoints(a2),d3
		lsl	#3,d3
		add	#16,d3
		add	d3,d2		
		sub	d2,d0
		sub	Scr_Y_Level_Pos(a6),d1
		sub	#32,d1
		*--Differenz durch Counter teilen
		moveq	#0,d2
		move.b	HitPoint_Fly_Back(a4),d2
		ext.l	d0
		ext.l	d1
		divs	d2,d0
		divs	d2,d1
		*--Differenz auf Positionen addieren
		sub	d0,Bob_X_Position(a4)
		sub	d1,Bob_Y_Position(a4)
		*--Counter subtrahieren und auf ENDE testen
		subq.b	#1,HitPoint_Fly_Back(a4)
		bne.s	.FlyBackEnd
		move.b	TEMET_MAX_HitPoints(a2),d0 
		cmp.b	TEMET_ANZ_HitPoints(a2),d0
		beq.s	.OutB
		addq.b	#1,TEMET_ANZ_HitPoints(a2)
		addq.b	#1,SCR_HitPoint_Soll(a2)

.OutB		jsr	Out_Bob_Damage
.FlyBackEnd	bsr	Show_Extra
		rts
.No_Fly_Back	*--More Standart Routs
		jsr	Test_Bob_Out
		jsr	Test_TEMET_Hit
		lea	(a6),a2
		*--Test if HP should be initialized
		tst.b	HitPoint_Rout(a4)
		bne.s	.NoInit
		*--Init HP Falling
		move.b	#HP_FALLROUT,HitPoint_Rout(a4)
		move	#2,HitPoint_X_Speed(a4)
		clr.l	HitPoint_Y_Speed(a4)
		move.l	#$00002000,HitPoint_Y_Acce(a4)
		move.b	#-1,HitPoint_Fly_Back(a4)	;--Fly hin Val setzen
		move	TEMET_Y_Position(a2),HitPoint_Save_Y(a4)
		bra	.Fly_Hin
.NoInit		*--Routine soll abgearbeitet werden ?
		bsr	Show_Extra
		cmp.b	#HP_FALLROUT,HitPoint_Rout(a4)
		beq	.HPFallen
		bra.s	.DoWait
		rts
*-------------------------------------------------------------------------------------
*--------		SPECIAL-Routs
*-------------------------------------------------------------------------------------
.DoWait		subq.b	#1,HitPoint_Wait(a4)
		bpl.s	.EndRout
		move.b	#HP_FALLROUT,HitPoint_Rout(a4)
		move.l	#HitPoint_Fall_Anim,Bob_Next_Anim(a4)
		move	#8,Bob_Anim_Delay_Init(a4)
		jsr	Get_Next_Bob_Frame
.EndRout		rts
*-------------------------------------------------------------------------------------
.HPFallen		*--HitPoint fllt bis er auf Boden trifft
		*--Speeds berechnen und auf Koords addieren
		move	HitPoint_X_Speed(a4),d0
		add	d0,Bob_X_Position(a4)
		move.l	HitPoint_Y_Acce(a4),d0
		add.l	d0,HitPoint_Y_Speed(a4)
		move	HitPoint_Y_Speed(a4),d0
		add	d0,Bob_Y_Position(a4)
		*--LevelAdr berechnen
		move	Bob_X_Position(a4),d0
		addq	#HP_X_MIDDLE,d0
		move	Bob_Y_Position(a4),d1
		jsr	Get_Block_Bits
		*--Test auf Y Kolli
		tst.l	HitPoint_Y_Speed(a4)
		bpl.s	.TestXKolli
		move	d0,d1
		swap	d0
		btst	#SCR_KOLLISION_BIT,d0
		bne.s	.YKolli
		add	d1,d1
		add	d1,d1
		move.l	Scr_Block_EntryAdrs(a6),a1
		move.l	(a1,d1),a1
		cmp.b	#boden,Block_Through(a1)
		beq.s	.YKolli
		cmp.b	#swand,Block_Through(a1)
		beq	.YKolli
		bra.s	.TestXKolli
.YKolli		*--Y Kolli
		neg.l	HitPoint_Y_Speed(a4)
		tst	HitPoint_Y_Speed(a4)
		beq.s	.MakeOnbe
		bpl.s	.NoErrore
		move.l	#$00020000,HitPoint_Y_Speed(a4)
		bra.s	.NoErrore
.MakeOnbe	move.l	#$00010000,HitPoint_Y_Speed(a4)
.NoErrore	move	HitPoint_Y_Speed(a4),d1
		add	d1,Bob_Y_Position(a4)
		add	d1,Bob_Y_Position(a4)
		move.l	#HitPoint_XBUMP_Anim,Bob_Next_Anim(a4)
		move	#4,Bob_Anim_Delay_Init(a4)
		jsr	Get_Next_Bob_Frame
		
.TestXKolli	*--Test auf X Kolli
		move	Bob_X_Position(a4),d0
		subq	#8,d0
		tst	HitPoint_X_Speed(a4)
		beq.s	.NoXKolli
		bmi.s	.OKAYX
		add	#32,d0
.OKAYX		move	Bob_Y_Position(a4),d1
		;add	#16,d1
		addq	#8,d1
		jsr	Get_Block_Bits
		swap	d0
		btst	#SCR_KOLLISION_BIT,d0
		beq.s	.NoXKolli
		*--X Kolli/ Values nderen und Kugel initialisieren
		move.b	HitPoint_X_Speed+1(a4),HitPoint_X_Stop(a4)
		neg	HitPoint_X_Speed(a4)
		move	HitPoint_X_Speed(a4),d1
		add	d1,Bob_X_Position(a4)
		add	d1,Bob_X_Position(a4)
		move.l	#HitPoint_XBUMP_Anim,Bob_Next_Anim(a4)
		move	#4,Bob_Anim_Delay_Init(a4)
		jsr	Get_Next_Bob_Frame
.NoXKolli
		*--Test Y Solid
		tst	HitPoint_Y_Speed(a4)
		bmi.s	.NoYKolli
		move	Bob_X_Position(a4),d0
		addq	#HP_X_MIDDLE,d0
		move	Bob_Y_Position(a4),d1
		add	Bob_Height(a4),d1
		jsr	Get_Block_Bits
		add	d0,d0
		add	d0,d0
		move.l	Scr_Block_EntryAdrs(a6),a1
		move.l	(a1,d0),a1
		cmp.b	#boden,Block_Through(a1)
		beq.s	.TestHitGerade
		cmp.b	#swand,Block_Through(a1)
		bne.s	.NoYKolli
		sub	d3,Bob_Y_Position(a4)

		move	Bob_X_Position(a4),d0
		addq	#HP_X_MIDDLE,d0
		move	Bob_Y_Position(a4),d1
		add	Bob_Height(a4),d1
		sub	#16,d1
		jsr	Get_Block_Bits
		add	d0,d0
		add	d0,d0
		move.l	Scr_Block_EntryAdrs(a6),a1
		move.l	(a1,d0),a1
		cmp.b	#swand,Block_Through(a1)
	;bne	.Init_Jump_Up
		bne	.Init_Schrge_Jump
		sub	#16,Bob_Y_Position(a4)
	;bra	.Init_Jump_Up
		bra	.Init_Schrge_Jump
.NoYKolli		rts
.TestHitGerade	*--Auf Schraege testen
		clr.l	HitPoint_Y_Speed(a4)
		sub	d3,Bob_Y_Position(a4)
		cmp.b	#SCHRAEG,Block_Schraeg_Flag(a1)
		beq.s	.Init_Schrge_Jump

		moveq	#0,d0
		move.b	Block_Y0(a1,d2),d0
		tst.b	d0
		bmi.s	.NoAdd
		add	d0,Bob_Y_Position(a4)
.NoAdd
		bra.s	.Init_Gerade_Action

*-------------------------------------------------------------------------------------
*-----------------	CHOOSE-Action
.Init_Schrge_Jump	*--Wie schrg ist die schrge und wie hoch mu ich hpfen

		cmp.b	#SCHRAEG,Block_Schraeg_Flag(a1)
		bne.s	.CheckThisNot
		cmp.b	#-2,Block_Y0(a1,d2)
		beq.s	.OtherJ

.CheckThisNot	lsr	#2,d2
		move.b	Block_Proz_Y_1(a1,d2),d3	;Yn=Ya*Y%/100
		bmi.s	.NormalJ
		cmp.b	#50,d3
		bls.s	.NormalJ
.OtherJ		bra	.Init_Very_ScrgJ
		rts
.NormalJ	bra	.Init_Jump_Schrg
		rts
.Init_Gerade_Action	*--Welche Aktion (zufllig auswhlen)
		jsr	.Test_How_Far_TEMET
		cmp	#HP_PANIC_AREA,d0
		bls	.Init_Panic_Jump
		cmp	#HP_ATTENTION_AREA,d0
		bhi.s	.Test_Further
.Init_High_JumpPrio	*--Init 75% of Jump
		moveq	#HP_ATTENTION_VAL-1,d2
		bra.s	.Choose_Rout
.Test_Further	*--Welche Aktion weiter
		cmp	#HP_NORMAL_AREA,d0
		bhi.s	.Init_Low_Jump_Prio
.Init_Norm_JumpPrio	*--Init 60% of Jump
		moveq	#HP_NORMAL_VAL-1,d2
		bra.s	.Choose_Rout
.Init_Low_Jump_Prio	*--Init 40% of Jump
		moveq	#HP_KICHER_VAL-1,d2
.Choose_Rout	*--zufllig auswhlen ob Jumpen oder Shit
		*--je grer d2 desto wahrscheinlicher ist Jump
		jsr	Get_Zuffi_d7
		and	#7,d7
		cmp	d7,d2
		bls.s	.Jump_On
.Choose_Shit	*--Shit aussuchen
		and	#3,d7
		cmp	#0,d7
		beq.s	.Init_Jump_Up
		cmp	#1,d7
		beq	.Init_Blinken
		cmp	#2,d7
		beq	.Init_Wackel
		cmp	#3,d7
		beq	.Init_JumpAgainst
.Jump_On		*--wie hoch+weit springen aussuchen
		add	d7,d2
		lsr	#2,d2	;X-Speed
		lsr	#1,d7
		addq	#2,d7
		neg	d7	;Y-Speed
		*--Richtung aussuchen
		tst.b	HitPoint_X_Stop(a4)
		beq.s	.Correct_Dir
		bpl.s	.DirBeNeg
.DirBePos		*--Richtung be positiv
		tst	d1
		bpl.s	.Correct_Dir
		bra.s	.Not_Correct_Dir
.DirBeNeg		*--Richtung be negativ
		tst	d1
		bmi.s	.Correct_Dir
.Not_Correct_Dir	*--kein ausweg -> zufallsAktion
		bra.s	.Choose_Shit
.Correct_Dir	muls	d1,d2
		bra	.Init_Jump
		rts
*-------------------------------------------------------------------------------------
*------------	InitActionsRoutinen
.Init_Jump_Up	*--einfach hoch springen
		IFEQ	SOUNDFX
		tst.b	HitPoint_Play_SFX(a4)
		bne.s	.NoPlay1
		move.b	#HP_PLAY_VERZ,HitPoint_Play_SFX(a4)
		moveq	#29,d0
		jsr	TFMX+16
.NoPlay1
		ENDC
		move.b	#HP_FALLROUT,HitPoint_Rout(a4)
		move.l	#HitPoint_YBUMP_Anim,Bob_Next_Anim(a4)
		move	#8,Bob_Anim_Delay_Init(a4)
		move.l	#$fffb0000,HitPoint_Y_Speed(a4)
		move.l	#$00003000,HitPoint_Y_Acce(a4)
		clr.w	HitPoint_X_Speed(a4)
		rts



.Init_Very_ScrgJ

		move.b	Block_Dir_X(a1),d1
		ext.w	d1

		IFEQ	SOUNDFX
		tst.b	HitPoint_Play_SFX(a4)
		bne.s	.NoPlay20
		move.b	#HP_PLAY_VERZ,HitPoint_Play_SFX(a4)
		moveq	#29,d0
		jsr	TFMX+16
.NoPlay20
		ENDC
		move.b	#HP_FALLROUT,HitPoint_Rout(a4)
		move.l	#HitPoint_YBUMP_Anim,Bob_Next_Anim(a4)
		move	#8,Bob_Anim_Delay_Init(a4)
		move.l	#$fffb0000,HitPoint_Y_Speed(a4)
		move.l	#$00003000,HitPoint_Y_Acce(a4)
		subq	#4,Bob_Y_Position(a4)
		moveq	#2,d0
		muls	d1,d0
		move.w	d0,HitPoint_X_Speed(a4)
		rts

.Init_Jump_Schrg	*--springen bei schrgen
		IFEQ	SOUNDFX
		tst.b	HitPoint_Play_SFX(a4)
		bne.s	.NoPlay2
		move.b	#HP_PLAY_VERZ,HitPoint_Play_SFX(a4)
		moveq	#29,d0
		jsr	TFMX+16
.NoPlay2
		ENDC
		jsr	.Test_How_Far_TEMET
		move.b	#HP_FALLROUT,HitPoint_Rout(a4)
		move.l	#HitPoint_YBUMP_Anim,Bob_Next_Anim(a4)
		move	#8,Bob_Anim_Delay_Init(a4)
		move.l	#$fffc0000,HitPoint_Y_Speed(a4)
		move.l	#$00003000,HitPoint_Y_Acce(a4)
		subq	#4,Bob_Y_Position(a4)
		moveq	#1,d0
		muls	d1,d0
		move.w	d0,HitPoint_X_Speed(a4)
		rts

.Init_Jump	*--Initialize variables springen
		*--d2=X
		*--d7=Y
		IFEQ	SOUNDFX
		tst.b	HitPoint_Play_SFX(a4)
		bne.s	.NoPlay3
		move.b	#HP_PLAY_VERZ,HitPoint_Play_SFX(a4)
		moveq	#29,d0
		jsr	TFMX+16
.NoPlay3
		ENDC
		move.b	#HP_FALLROUT,HitPoint_Rout(a4)
		move.l	#HitPoint_YBUMP_Anim,Bob_Next_Anim(a4)
		move	#8,Bob_Anim_Delay_Init(a4)
		clr.l	HitPoint_Y_Speed(a4)
		move	d7,HitPoint_Y_Speed(a4)
		move.l	#$00003000,HitPoint_Y_Acce(a4)
		move	d2,HitPoint_X_Speed(a4)
		rts
.Init_Blinken	*--Mit Augen Blinzeln anschalten
		IFEQ	SOUNDFX
		tst.b	HitPoint_Play_SFX(a4)
		bne.s	.NoPlay4
		move.b	#HP_PLAY_VERZ,HitPoint_Play_SFX(a4)
		moveq	#24,d0
		jsr	TFMX+16
.NoPlay4
		ENDC
		move.b	#80,HitPoint_Wait(a4)
		move.b	#HP_WAITROUT,HitPoint_Rout(a4)
		move.l	#HitPoint_BLINZ_Anim,Bob_Next_Anim(a4)
		move	#4,Bob_Anim_Delay_Init(a4)
		clr.l	HitPoint_Y_Speed(a4)
		move.l	#$00003000,HitPoint_Y_Acce(a4)
		clr.w	HitPoint_X_Speed(a4)
		rts
.Init_Wackel	*--Hin und herwackeln anschalten
		IFEQ	SOUNDFX
		tst.b	HitPoint_Play_SFX(a4)
		bne.s	.NoPlay5
		move.b	#HP_PLAY_VERZ,HitPoint_Play_SFX(a4)
		moveq	#24,d0
		jsr	TFMX+16
.NoPlay5
		ENDC
		move.b	#80,HitPoint_Wait(a4)
		move.b	#HP_WAITROUT,HitPoint_Rout(a4)
		move.l	#HitPoint_WANK_Anim,Bob_Next_Anim(a4)
		move	#8,Bob_Anim_Delay_Init(a4)
		clr.l	HitPoint_Y_Speed(a4)
		move.l	#$00003000,HitPoint_Y_Acce(a4)
		clr.w	HitPoint_X_Speed(a4)
		rts
.Init_JumpAgainst	*--In entgegengesetzte Richtung Hpfen
		IFEQ	SOUNDFX
		tst.b	HitPoint_Play_SFX(a4)
		bne.s	.NoPlay6
		move.b	#HP_PLAY_VERZ,HitPoint_Play_SFX(a4)
		moveq	#29,d0
		jsr	TFMX+16
.NoPlay6
		ENDC
		neg	d1
		moveq	#1,d2
		muls	d1,d2
		moveq	#3,d7
		neg	d7
		bra	.Init_Jump
.Init_Panic_Jump	*--Panic Jump
		IFEQ	SOUNDFX
		tst.b	HitPoint_Play_SFX(a4)
		bne.s	.NoPlay7
		move.b	#HP_PLAY_VERZ,HitPoint_Play_SFX(a4)
		moveq	#29,d0
		jsr	TFMX+16
.NoPlay7
		ENDC
		moveq	#3,d2
		muls	d1,d2
		moveq	#5,d7
		neg	d7
		bra	.Init_Jump
*-------------------------------------------------------------------------------------
*------------------	TOOL-Routs
.Test_How_Far_TEMET	*--d0 =X BETRAG
		*--d1 =X DIR
		move	Bob_X_Position(a4),d0
		sub	TEMET_X_Position(a2),d0
		add	#16,d0
		move	Bob_X_Position(a4),d0
		sub	TEMET_X_Position(a2),d0
		tst	d0
		bpl.s	.initPos
.initNeg		moveq	#-1,d1
		neg	d0
		rts
.initPos		moveq	#1,d1
		rts
*-------------------------------------------------------------------------------------
*-----------------	ANIM-Tables
HitPoint_Fall_Anim	dc.w	0
		dc.l	HP_Bump1.GFX,0
		dc.w	0
		dc.l	HP_Bump2.GFX
		dc.w	0,2
		dc.w	ENTRY_END
		dc.l	HitPoint_Fall_Anim
HitPoint_XBUMP_Anim	dc.w	0
		dc.l	HP_Bump2.GFX
		dc.w	0,2
		dc.w	0
		dc.l	HP_Bump3.GFX
		dc.w	0,4
		dc.w	ENTRY_END
		dc.l	HitPoint_XBUMP_Anim
HitPoint_YBUMP_Anim	dc.w	0
		dc.l	HP_Bump3.GFX
		dc.w	0,4
		dc.w	0
		dc.l	HP_Bump2.GFX
		dc.w	0,2
		dc.w	ENTRY_END
		dc.l	HitPoint_Fall_Anim
HitPoint_BLINZ_Anim	dc.w	0
		dc.l	HP_Blink1.GFX
		dc.w	0,0
		dc.w	0
		dc.l	HP_Blink2.GFX
		dc.w	0,0
		dc.w	0
		dc.l	HP_Blink3.GFX
		dc.w	0,0
		dc.w	0
		dc.l	HP_Blink2.GFX
		dc.w	0,0
		dc.w	0
		dc.l	HP_Blink3.GFX
		dc.w	0,0
		dc.w	0
		dc.l	HP_Blink1.GFX
		dc.w	0,0
		dc.w	0
		dc.l	HP_Blink1.GFX
		dc.w	0,0
		dc.w	0
		dc.l	HP_Blink1.GFX
		dc.w	0,0
		dc.w	0
		dc.l	HP_Blink1.GFX
		dc.w	0,0
		dc.w	0
		dc.l	HP_Blink1.GFX
		dc.w	0,0
		dc.w	ENTRY_END
		dc.l	HitPoint_BLINZ_Anim
HitPoint_WANK_Anim	dc.w	0
		dc.l	HP_Wank1.GFX
		dc.w	0,0
		dc.w	0
		dc.l	HP_Wank2.GFX
		dc.w	0,0
		dc.w	0
		dc.l	HP_Wank3.GFX
		dc.w	0,0
		dc.w	0
		dc.l	HP_Wank4.GFX
		dc.w	0,0
		dc.w	0
		dc.l	HP_Wank5.GFX
		dc.w	0,0
		dc.w	0
		dc.l	HP_Wank4.GFX
		dc.w	0,0
		dc.w	0
		dc.l	HP_Wank3.GFX
		dc.w	0,0
		dc.w	0
		dc.l	HP_Wank2.GFX
		dc.w	0,0
		dc.w	ENTRY_END
		dc.l	HitPoint_WANK_Anim

*-------------------------------------------------------------------------------------
**************************************************************************************
HandleExtra:	*--*>Handle Norm Extra
		jsr	Test_TEMET_Hit
		tst.b	Bob_Used(a4)
		bpl	.NoClearExtra
		*--*>Init Aufl Anim
		lea	Area_Enter_Vector(a6),a1
		move	Bob_X_Position(a4),d1
		move	Bob_Y_Position(a4),d2
		move	#GEMS_AUFL,d0
		jsr	ENTER_BOB
		IFEQ	SOUNDFX
		move	d6,d0
		jsr	TFMX+16
		ENDC
		moveq	#1,d7
		rts
.NoClearExtra	*--*>TestBobOut
		jsr	Test_Bob_Out
		moveq	#0,d7
		rts

*-------------------------------------------------------------------------------------
**************************************************************************************

*-------------------------------------------------------------------------------------
Show_Extra:	*--*>Show it
		jsr	Check_Object_Borders
		beq.s	.NoDisplay
		moveq	#0,d2
		move.w	#Extras_VRam/32,d3
		move.l	Bob_SigelInfo(a4),a0
		jsr	Add_Simple_Sigel
.NoDisplay:	rts
*-------------------------------------------------------------------------------------
**************************************************************************************
Aufl_Rout:	*--*>Handle Aufblitzen
		jsr	Standart_BobAnim
		jsr	Show_Extra
		rts
*-------------------------------------------------------------------------------------
Aufl_Anim:	dc.w	0
		dc.l	Extra_Obj_25
		dc.w	-16,0
		dc.w	0
		dc.l	Extra_Obj_25
		dc.w	-16,0
		dc.w	0
		dc.l	Extra_Obj_25
		dc.w	-16,0
		dc.w	0
		dc.l	Extra_Obj_26
		dc.w	-16,0
		dc.w	0
		dc.l	Extra_Obj_27
		dc.w	-16,0
		dc.w	END_OUT_DAMAGE
*-------------------------------------------------------------------------------------
**************************************************************************************
ENTER_SMOKE_X_Offs:	*--Enter BIG Smoke with ROUT 2
		move	#SMOKE_X,d0
		move	Bob_X_Position(a4),d1
		subq	#8,d1
		move	Bob_Y_Position(a4),d2
		add	d3,d1
		add	d4,d2
		lea	Area_Enter_Vector(a6),a1
		move.l	a4,-(sp)
		jsr	Search_Bob_Entry
		move.l	(sp)+,a4
		rts
ENTER_SMOKE_X:	*--Enter BIG Smoke with ROUT 2
		move	#SMOKE_X,d0
		move	Bob_X_Position(a4),d1
		subq	#8,d1
		move	Bob_Y_Position(a4),d2
		lea	Area_Enter_Vector(a6),a1
		move.l	a4,-(sp)
		jsr	Search_Bob_Entry
		move.l	(sp)+,a4
		rts
*------------------------------------------------------
ENTER_SMOKE_Y_Offs:	*--Enter BIG Smoke with ROUT 2
		move	#SMOKE_Y,d0
		move	Bob_X_Position(a4),d1
		subq	#8,d1
		move	Bob_Y_Position(a4),d2
		add	d3,d1
		add	d4,d2
		lea	Area_Enter_Vector(a6),a1
		move.l	a4,-(sp)
		jsr	Search_Bob_Entry
		move.l	(sp)+,a4
		rts
ENTER_SMOKE_Y:	*--Enter BIG Smoke with ROUT 2
		move	#SMOKE_Y,d0
		move	Bob_X_Position(a4),d1
		subq	#8,d1
		move	Bob_Y_Position(a4),d2
		lea	Area_Enter_Vector(a6),a1
		move.l	a4,-(sp)
		jsr	Search_Bob_Entry
		move.l	(sp)+,a4
		rts
**************************************************************************************
Smoke_Count_Frame	=Bob_Special_1	;B
Smoke_Entfernung	=Bob_Special_2	;W
Smoke_Change	=Bob_Special_3	;B
Smoke_Move_Rout	=Bob_Koords_Save1	;LW
*-------------------------------------------------------------------------------------
I_Handle_Smoke_X:	*--*>Init X_Move Rout
		move.l	#Move_Smoke_X,Smoke_Move_Rout(a4)
		move.l	#Handle_Smoke,Bob_Routine(a4)
		rts
I_Handle_Smoke_Y:	*--*>Init X_Move Rout
		move.l	#Move_Smoke_Y,Smoke_Move_Rout(a4)
		move.l	#Handle_Smoke,Bob_Routine(a4)
		rts
*-------------------------------------------------------------------------------------
Move_Smoke_G:	*--*>
		addq	#1,Smoke_Entfernung(a4)
		move	Smoke_Entfernung(a4),d0
		eor.b	#1,Smoke_Change(a4)
		tst.b	Smoke_Change(a4)
		beq.s	.NoNeg
		neg	d0
.NoNeg		rts
Move_Smoke_X:	move	d0,Bob_X_Offset(a4)
		rts
Move_Smoke_Y:	move	d0,Bob_Y_Offset(a4)
		rts
*-------------------------------------------------------------------------------------
Handle_Smoke:	*--*>MoveSmoke
		jsr	Move_Smoke_G
		move.l	Smoke_Move_Rout(a4),a0
		jsr	(a0)
		*--*>Test if Init Frame Counter
		tst.b	Smoke_Count_Frame(a4)
		bne.s	.NoInit
		move.b	#24,Smoke_Count_Frame(a4)
.NoInit		subq.b	#1,Smoke_Count_Frame(a4)
		bne.s	.NoOut
		jsr	Out_Bob_Damage
		rts
.NoOut		cmp.b	#16,Smoke_Count_Frame(a4)
		beq.s	.Anim_It
		cmp.b	#8,Smoke_Count_Frame(a4)
		beq.s	.Anim_It
		bra.s	.No_Anim
.Anim_It		*--*>Make_Animation
		move	Bob_X_Offset(a4),d6
		move	Bob_Y_Offset(a4),d7
		jsr	Get_Next_Bob_Frame
		move	d6,Bob_X_Offset(a4)
		move	d7,Bob_Y_Offset(a4)
.No_Anim		*--*>Show_It
		move.w	#Flames_VRam/32,d3
		move.l	Bob_SigelInfo(a4),a0
		moveq	#0,d2
		jsr	Show_Simple_Object
		rts
*-------------------------------------------------------------------------------------
Smoke_Anim:		dc.w	0
		dc.l	Extra2_Obj_2
		dc.w	0,0
		dc.w	0
		dc.l	Extra2_Obj_3
		dc.w	0,0
		dc.w	0
		dc.l	Extra2_Obj_4
		dc.w	0,0

**************************************************************************************
*-------------------------------------------------------------------------------------
*----------------------	EXTRASYSTEM
*-------------------------------------------------------------------------------------
**************************************************************************************

**************************************************************************************
*-------------------------------------------------------------------------------------
*------------	EXTRASYSTEM-STRUKTURE
*-------------------------------------------------------------------------------------
EXTRAS_Tab_Adr	=Bob_Plane_Order	;LW
		rsreset
ExtraS_Show_Rout	rs.l	1
ExtraS_DelayTab	rs.l	1
ExtraS_LampWaitAnim	rs.l	1
ExtraS_LampBlinkAnim	rs.l	1
Extra_Open_Anim	rs.l	1

EXTRAS_WaterStrukture	dc.l	Show_Water_Object
		dc.l	Delay_Tab_Water
		dc.l	Lamp_Wait_AnimWa
		dc.l	Lamp_Blink_AnimWa
		dc.l	Extra_Open_AnimWa

EXTRAS_UnderStrukture	dc.l	Show_UnderObject
		dc.l	Delay_Tab_Under
		dc.l	Lamp_Wait_AnimUn
		dc.l	Lamp_Blink_AnimUn
		dc.l	Extra_Open_AnimUn

EXTRAS_TekknoStrukture	dc.l	Show_TekknoObject
		dc.l	Delay_Tab_Tekkno
		dc.l	Lamp_Wait_AnimTe
		dc.l	Lamp_Blink_AnimTe
		dc.l	Extra_Open_AnimTe

EXTRAS_NaturStrukture	dc.l	Show_NaturObject
		dc.l	Delay_Tab_Natur
		dc.l	Lamp_Wait_AnimNa
		dc.l	Lamp_Blink_AnimNa
		dc.l	Extra_Open_AnimNa

EXTRAS_InkaStrukture	dc.l	Show_InkaObject
		dc.l	Delay_Tab_Inka
		dc.l	Lamp_Wait_AnimIn
		dc.l	Lamp_Blink_AnimIn
		dc.l	Extra_Open_AnimIn

**************************************************************************************
*-------------------------------------------------------------------------------------
*------------	EXTRASYSTEM-DELAY+ANIMTABS
*-------------------------------------------------------------------------------------
Delay_Tab_Tekkno
Delay_Tab_Water	dc.b	8,7,6,5,4,3,2,1,0,0
		even
Delay_Tab_Inka
Delay_Tab_Under	dc.b	7,6,5,4,3,2,1,0,0,0
		even
Delay_Tab_Natur	dc.b	3,3,2,2,1,1,0,0,0,0
		even
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Lamp_Wait_AnimWa:	dc.w	0
		dc.l	WColumn_Obj0,0
		dc.w	ENTRY_END
		dc.l	Lamp_Wait_AnimWa
Lamp_Blink_AnimWa:	dc.w	0
		dc.l	WColumn_Obj0,0
		dc.w	0
		dc.l	WColumn_Obj1,0
		dc.w	0
		dc.l	WColumn_Obj2,0
		dc.w	0
		dc.l	WColumn_Obj3,0
		dc.w	ENTRY_END
		dc.l	Lamp_Blink_AnimWa

Lamp_Wait_AnimUn:	dc.w	0
		dc.l	UTree_Obj0,0
		dc.w	ENTRY_END
		dc.l	Lamp_Wait_AnimUn
Lamp_Blink_AnimUn:	dc.w	0
		dc.l	UTree_Obj0,0
		dc.w	0
		dc.l	UTree_Obj1,0
		dc.w	0
		dc.l	UTree_Obj2,0
		dc.w	0
		dc.l	UTree_Obj3,0
		dc.w	0
		dc.l	UTree_Obj4,0
		dc.w	0
		dc.l	UTree_Obj5,0
		dc.w	ENTRY_END
		dc.l	Lamp_Blink_AnimUn

Lamp_Wait_AnimTe:	dc.w	0
		dc.l	TExtra_Obj3,0
		dc.w	ENTRY_END
		dc.l	Lamp_Wait_AnimTe
Lamp_Blink_AnimTe:	dc.w	0
		dc.l	TExtra_Obj3,0
		dc.w	0
		dc.l	TExtra_Obj4,0
		dc.w	0
		dc.l	TExtra_Obj5,0
		dc.w	0
		dc.l	TExtra_Obj6,0
		dc.w	0
		dc.l	TExtra_Obj7,0
		dc.w	0
		dc.l	TExtra_Obj8,0
		dc.w	ENTRY_END
		dc.l	Lamp_Blink_AnimTe

Lamp_Wait_AnimNa:	dc.w	0
		dc.l	NExtra_Obj1,0
		dc.w	ENTRY_END
		dc.l	Lamp_Wait_AnimNa

Lamp_Blink_AnimNa:	dc.w	0
		dc.l	NExtra_Obj1,0
		dc.w	0
		dc.l	NExtra_Obj2,0
		dc.w	0
		dc.l	NExtra_Obj3,0
		dc.w	0
		dc.l	NExtra_Obj5,0

		dc.w	1
		dc.l	NExtra_Obj3
		dc.w	-9,0
		dc.w	1
		dc.l	NExtra_Obj2
		dc.w	-25,0
		dc.w	1
		dc.l	NExtra_Obj1
		dc.w	-25,0

		dc.w	1
		dc.l	NExtra_Obj2
		dc.w	-25,0
		dc.w	1
		dc.l	NExtra_Obj3
		dc.w	-9,0
		dc.w	1
		dc.l	NExtra_Obj4
		dc.w	-9,0

		dc.w	0
		dc.l	NExtra_Obj3,0
		dc.w	0
		dc.l	NExtra_Obj2,0

		dc.w	ENTRY_END
		dc.l	Lamp_Blink_AnimNa

Lamp_Wait_AnimIn:	dc.w	0
		dc.l	IExtra_Obj0,8
		dc.w	ENTRY_END
		dc.l	Lamp_Wait_AnimIn
Lamp_Blink_AnimIn:	dc.w	0
		dc.l	IExtra_Obj0,8
		dc.w	0
		dc.l	IExtra_Obj1,8
		dc.w	0
		dc.l	IExtra_Obj2,8
		dc.w	0
		dc.l	IExtra_Obj3,8
		dc.w	0
		dc.l	IExtra_Obj4,8
		dc.w	1
		dc.l	IExtra_Obj3,8
		dc.w	1
		dc.l	IExtra_Obj2,8
		dc.w	1
		dc.l	IExtra_Obj1,8
		dc.w	ENTRY_END
		dc.l	Lamp_Blink_AnimIn

*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Extra_Wait_AnimWa	dc.w	0
		dc.l	WAmphora_Obj0,0
		dc.w	ENTRY_END
		dc.l	Extra_Wait_AnimWa
Extra_Open_Anim_CntWa
Extra_Open_AnimWa	dc.w	0
		dc.l	WAmphora_Obj1
		dc.w	0,48-25
		dc.w	ENTRY_END
		dc.l	Extra_Open_Anim_CntWa

Extra_Wait_AnimUn	dc.w	0
		dc.l	UBall_Obj0,0
		dc.w	ENTRY_END
		dc.l	Extra_Wait_AnimUn
Extra_Open_Anim_CntUn
Extra_Open_AnimUn	dc.w	0
		dc.l	UBall_Obj1,16
		dc.w	ENTRY_END
		dc.l	Extra_Open_AnimUn

Extra_Wait_AnimTe:	dc.w	0
		dc.l	TExtra_Obj0,0
		dc.w	ENTRY_END
		dc.l	Extra_Wait_AnimTe
Extra_Open_AnimTe:	dc.w	0
		dc.l	TExtra_Obj1,0
Extra_Open_Anim_CntTe:	dc.w	0
		dc.l	TExtra_Obj2,0
		dc.w	ENTRY_END
		dc.l	Extra_Open_Anim_CntTe


Extra_Wait_AnimNa:	dc.w	0
		dc.l	NExtra_Obj7,0
		dc.w	ENTRY_END
		dc.l	Extra_Wait_AnimNa
Extra_Open_AnimNa:	dc.w	0
		dc.l	NExtra_Obj8,0
		dc.w	0
		dc.l	NExtra_Obj8,0
		dc.w	0
		dc.l	NExtra_Obj8,0
		dc.w	0
		dc.l	NExtra_Obj7,0
		dc.w	0
		dc.l	NExtra_Obj6,0
		dc.w	0
		dc.l	NExtra_Obj6,0
Extra_Open_CmpNa:	dc.w	0
		dc.l	NExtra_Obj7,0
		dc.w	ENTRY_END
		dc.l	Extra_Open_AnimNa
Extra_Open_Anim_CntNa:	dc.w	0
		dc.l	NExtra_Obj6,0
		dc.w	ENTRY_END
		dc.l	Extra_Open_Anim_CntNa

Extra_Wait_AnimIn:	dc.w	0
		dc.l	IExtra_Obj5,8
		dc.w	ENTRY_END
		dc.l	Extra_Wait_AnimIn
Extra_Open_AnimIn:	dc.w	0
		dc.l	IExtra_Obj6,8
Extra_Open_Anim_CntIn:	dc.w	0
		dc.l	IExtra_Obj7,8
		dc.w	ENTRY_END
		dc.l	Extra_Open_Anim_CntIn

**************************************************************************************
*-------------------------------------------------------------------------------------
*------------	EXTRASYSTEM-INITROUTS
*-------------------------------------------------------------------------------------
Klappe_last_Entry	=Bob_Koords_Save1	;LW
Klappe_Spuck_Rout	=Bob_Koords_Save2	;LW
Klappe_Open_Klappe	=Bob_Special_1	;B
Klappe_Spuck_Timer	=Bob_Special_1+1	;B
Timet_in_Klappe	=Bob_Special_2	;B
Akt_Klappe_A0_Pos	=Bob_Special_3	;LW
Klappe_Pass_Height	=Bob_Hit	;W
*---------------------------------------------------------------------------
Extra_Rout_InitWa	*---*>Initialisiere Extra Rout
		move.l	#EXTRAS_WaterStrukture,EXTRAS_Tab_Adr(a4)
		*--*>Count Lamps
		*--Init X-Y Koords
		sub	#16,Bob_Y_Position(a4)
		and	#$fff0,Bob_Y_Position(a4)
		and	#$fff0,Bob_X_Position(a4)

		move	Bob_X_Position(a4),d5
		move	Bob_Y_Position(a4),d6
		add	Bob_Height(a4),d6
		move	d6,-(sp)
		moveq	#0,d7
		moveq	#0,d4
		add	#16,d6

		*--Count Loop
;.Count_Loop	move	d5,d0
;		move	d6,d1
;		jsr	Get_Block_Bits
;		add	d0,d0
;		add	d0,d0
;		move.l	Scr_Block_EntryAdrs(a6),a1
;		move.l	(a1,d0),a1
;		cmp.b	#boden,Block_Through(a1)
;		beq.s	.Get_Entries
;		eor	#1,d4
;		beq.s	.NoAdd
;		addq	#1,d7
;.NoAdd		add	#16,d6
;		bra.s	.Count_Loop
.Get_Entries	*--get d7 Entrys
		move	#6*16,Klappe_Pass_Height(a4)
		moveq	#2,d7
.Ok		move	d7,d0
		;jsr	Get_Entry_Adrs_HI
		jsr	Get_Entry_Adrs_Back
		move	(sp)+,d6
		tst	d0
		bne	.End_Luke
		*--Init LoopCounter
		subq	#1,d7
		*--Init Values
		lea	Area_Enter_Vector(a6),a1
		lea	ENTRY_ADRS(a6),a0
		move.l	a4,a5
		move.l	a4,-(sp)
		*--Lampen eintragen und verkettete Liste herstellen
.Enter_Loop		move	#S_EXTRALAMP,d0
		move	d5,d1
		move	d6,d2
		add	#16,d2
		move.l	(a0)+,a4
		jsr	ENTER_BOB
		move.l	#EXTRAS_WaterStrukture,EXTRAS_Tab_Adr(a4)
		move.l	#Lamp_Wait_AnimWa,Bob_Next_Anim(a4)
		sub	#16,Bob_X_Position(a4)
		move.l	a5,Lamp_Prev_Entry(a4)
		move.l	a4,a5
		add	#32,d6
		dbf	d7,.Enter_Loop
.FoundBoden		*--End Lamp Entry
		move.l	(sp)+,a4
		move.l	a5,Klappe_last_Entry(a4)
		move.b	#2,Lamp_Speed_Sub(a4)
		add	#4,Bob_X_Position(a4)
		*--Init Rout 
		move	Bob_Number(a4),d0
		sub	#S_EXTRAK_01,d0
		mulu	#EXTRA_LENGTH,d0
		lea	RAM_Extras(a6),a0
		add	d0,a0
		tst	(a0)
		bmi.s	.Init_Done
		*--Init Fresh
		move.l	#Extra_Rout,Bob_Routine(a4)
		move.l	#I_Spuck_RoutGl1,Klappe_Spuck_Rout(a4)
		move.l	#Extra_Wait_AnimWa,Bob_Next_Anim(a4)
		rts
.Init_Done		*--*>Init Done
		move.l	#Extra_Rout,Bob_Routine(a4)
		move.l	#Extra_Open_Anim_CntWa,Bob_Next_Anim(a4)
		move.l	#RoutRts,Klappe_Spuck_Rout(a4)
		rts
.End_Luke		*--*>END
		move	(sp)+,d6
		jsr	Out_Bob
		rts
*-------------------------------------------------------------------------------------
Extra_Rout_InitUn	*---*>Initialisiere Extra Rout
		;add	#16,Bob_Y_Position(a4)
		;bra	Extra_Rout_InitTe
		*--*>Count Lamps
		move.l	#EXTRAS_UnderStrukture,EXTRAS_Tab_Adr(a4)
		*--Init X-Y Koords
		and	#$fff0,Bob_X_Position(a4)
		addq	#8,Bob_X_Position(a4)
		move	Bob_X_Position(a4),d5
		and	#$fff0,d5
		move	Bob_Y_Position(a4),d6
		add	#32,d6
		move	d6,d4
		moveq	#0,d7
		*--Count Loop
.Count_Loop		move	d5,d0
		move	d6,d1
		jsr	Get_Block_Bits
		add	d0,d0
		add	d0,d0
		move.l	Scr_Block_EntryAdrs(a6),a1
		move.l	(a1,d0),a1
		cmp.b	#boden,Block_Through(a1)
		beq.s	.Get_Entries
		addq	#1,d7
		add	#16,d6
		bra.s	.Count_Loop
.Get_Entries	subq	#1,d7
		*--get d7 Entrys
		move	d7,d0
		lsl	#4,d0
		add	#16,d0
		move	d0,Klappe_Pass_Height(a4)
		move	d7,d0
		;jsr	Get_Entry_Adrs_HI
		jsr	Get_Entry_Adrs_Back
		tst	d0
		bne	.End_Extra
		*--Init LoopCounter
		subq	#1,d7
		*--Init Values
		move	d4,d6
		lea	Area_Enter_Vector(a6),a1
		lea	ENTRY_ADRS(a6),a0
		move.l	a4,a5
		move.l	a4,-(sp)
		*--Lampen eintragen und verkettete Liste herstellen
		sub	#16,d5
		sub	#12,d6
		add	#16,d6
		add	#16,Bob_Y_Position(a4)
.Enter_Loop		move	#S_EXTRALAMP,d0
		move	d5,d1
		move	d6,d2
		move.l	(a0)+,a4
		jsr	ENTER_BOB
		move.l	#EXTRAS_UnderStrukture,EXTRAS_Tab_Adr(a4)
		move.l	#Lamp_Wait_AnimUn,Bob_Next_Anim(a4)
		move.l	a5,Lamp_Prev_Entry(a4)
		move.l	a4,a5
		add	#16,d6
		dbf	d7,.Enter_Loop
.FoundBoden		*--End Lamp Entry
		move.l	(sp)+,a4
		move.l	a5,Klappe_last_Entry(a4)
		move.b	#2,Lamp_Speed_Sub(a4)
		*--Init Rout 
		move	Bob_Number(a4),d0
		sub	#S_EXTRAK_01,d0
		mulu	#EXTRA_LENGTH,d0
		lea	RAM_Extras(a6),a0
		add	d0,a0
		tst	(a0)
		bmi.s	.Init_Done
		*--*>Init Fresh
		move.l	#Extra_Rout,Bob_Routine(a4)
		move.l	#Extra_Wait_AnimUn,Bob_Next_Anim(a4)
		move.l	#I_Spuck_RoutGl1,Klappe_Spuck_Rout(a4)
		rts
.Init_Done		*--*>Init Done
		move.l	#Extra_Rout,Bob_Routine(a4)
		move.l	#Extra_Open_AnimUn,Bob_Next_Anim(a4)
		move.l	#RoutRts,Klappe_Spuck_Rout(a4)
		rts
.End_Extra		*--*>END Luke -> No Entries found
		jsr	Out_Bob
		rts
*-------------------------------------------------------------------------------------
Extra_Rout_InitIn	*---*>Initialisiere Extra Rout
		move.l	#EXTRAS_InkaStrukture,EXTRAS_Tab_Adr(a4)
		and	#$fff0,Bob_Y_Position(a4)
		and	#$fff0,Bob_X_Position(a4)

		move	Bob_X_Position(a4),d5
		move	Bob_Y_Position(a4),d6
		add	#32,d6
		move	d6,-(sp)
		moveq	#0,d7
		moveq	#0,d4
		*--Count Loop
.Count_Loop		move	d5,d0
		move	d6,d1
		jsr	Get_Block_Bits
		add	d0,d0
		add	d0,d0
		move.l	Scr_Block_EntryAdrs(a6),a1
		move.l	(a1,d0),a1
		cmp.b	#boden,Block_Through(a1)
		beq.s	.Get_Entries
		addq	#1,d7
		add	#32,d6
		bra.s	.Count_Loop
.Get_Entries	*--get d7 Entrys
		move	d7,d0
		lsl	#5,d0
		add	#16,d0
		move	d0,Klappe_Pass_Height(a4)
		move	d7,d0
		;jsr	Get_Entry_Adrs_HI
		jsr	Get_Entry_Adrs_Back
		move	(sp)+,d6
		tst	d0
		bne	.End_Extra
		*--Init LoopCounter
		subq	#1,d7
		*--Init Values
		lea	Area_Enter_Vector(a6),a1
		lea	ENTRY_ADRS(a6),a0
		move.l	a4,a5
		move.l	a4,-(sp)
		sub	#16,d5
.Enter_Loop		*--Lampen eintragen und verkettete Liste herstellen
		move	#S_EXTRALAMP,d0
		move	d5,d1
		move	d6,d2
		move.l	(a0)+,a4
		jsr	ENTER_BOB
		move.l	#EXTRAS_InkaStrukture,EXTRAS_Tab_Adr(a4)
		move.l	#Lamp_Wait_AnimIn,Bob_Next_Anim(a4)
		move.l	a5,Lamp_Prev_Entry(a4)
		move.l	a4,a5
		add	#32,d6
		dbf	d7,.Enter_Loop
.FoundBoden		*--End Lamp Entry
		move.l	(sp)+,a4
		move.l	a5,Klappe_last_Entry(a4)
		move.b	#2,Lamp_Speed_Sub(a4)
		*--Init Rout 
		move	Bob_Number(a4),d0
		sub	#S_EXTRAK_01,d0
		mulu	#EXTRA_LENGTH,d0
		lea	RAM_Extras(a6),a0
		add	d0,a0
		tst	(a0)
		bmi.s	.Init_Done
		*--*>Init Fresh
		move.l	#Extra_Rout,Bob_Routine(a4)
		move.l	#Extra_Wait_AnimIn,Bob_Next_Anim(a4)
		move.l	#I_Spuck_RoutGl1,Klappe_Spuck_Rout(a4)
		rts
.Init_Done		*--*>Init Done
		move.l	#Extra_Rout,Bob_Routine(a4)
		move.l	#Extra_Open_AnimIn,Bob_Next_Anim(a4)
		move.l	#RoutRts,Klappe_Spuck_Rout(a4)
		rts
.End_Extra		*--*>END Luke -> No Entries found
		jsr	Out_Bob
		rts
*-------------------------------------------------------------------------------------
Extra_Rout_InitTe	*---*>Initialisiere Extra Rout
		move.l	#EXTRAS_TekknoStrukture,EXTRAS_Tab_Adr(a4)
		*--*>Count Lamps
		*--Init X-Y Koords
		move	Bob_X_Position(a4),d5
		and	#$fff0,d5
		add	#16,d5
		move	Bob_Y_Position(a4),d6
		add	#32,d6
		addq	#4,d6
		move	d6,d4
		moveq	#0,d7
		*--Count Loop
.Count_Loop		move	d5,d0
		move	d6,d1
		jsr	Get_Block_Bits
		add	d0,d0
		add	d0,d0
		move.l	Scr_Block_EntryAdrs(a6),a1
		move.l	(a1,d0),a1
		cmp.b	#boden,Block_Through(a1)
		beq.s	.Get_Entries
		addq	#1,d7
		add	#16,d6
		bra.s	.Count_Loop
.Get_Entries	*--get d7 Entrys
		move	d7,d0
		lsl	#4,d0
		move	d0,Klappe_Pass_Height(a4)
		move	d7,d0
		;jsr	Get_Entry_Adrs_HI
		jsr	Get_Entry_Adrs_Back
		tst	d0
		bne	.End_Luke
		*--Init LoopCounter
		subq	#1,d7
		*--Init Values
		move	d4,d6
		lea	Area_Enter_Vector(a6),a1
		lea	ENTRY_ADRS(a6),a0
		move.l	a4,a5
		move.l	a4,-(sp)
		sub	#16,d5
		*--Lampen eintragen und verkettete Liste herstellen
.Enter_Loop		move	#S_EXTRALAMP,d0
		move	d5,d1
		move	d6,d2
		move.l	(a0)+,a4
		jsr	ENTER_BOB
		move.l	#EXTRAS_TekknoStrukture,EXTRAS_Tab_Adr(a4)
		move.l	#Lamp_Wait_AnimTe,Bob_Next_Anim(a4)
		move.l	a5,Lamp_Prev_Entry(a4)
		move.l	a4,a5
		add	#16,d6
		dbf	d7,.Enter_Loop
.FoundBoden		*--End Lamp Entry
		move.l	(sp)+,a4
		move.l	a5,Klappe_last_Entry(a4)
		move.b	#2,Lamp_Speed_Sub(a4)
		*--Init Rout 
		move	Bob_Number(a4),d0
		sub	#S_EXTRAK_01,d0
		mulu	#EXTRA_LENGTH,d0
		lea	RAM_Extras(a6),a0
		add	d0,a0
		tst	(a0)
		bmi.s	.Init_Done
		*--Init Fresh
		move.l	#Extra_Rout,Bob_Routine(a4)
		move.l	#Extra_Wait_AnimTe,Bob_Next_Anim(a4)
		move.l	#I_Spuck_RoutGl1,Klappe_Spuck_Rout(a4)
		rts
.Init_Done		*--*>Init Done
		move.l	#Extra_Rout,Bob_Routine(a4)
		move.l	#Extra_Open_Anim_CntTe,Bob_Next_Anim(a4)
		move.l	#RoutRts,Klappe_Spuck_Rout(a4)
		rts
.End_Luke		*--*>END Luke -> No Entries found
		jsr	Out_Bob
		rts

*-------------------------------------------------------------------------------------
Extra_Rout_InitNa	*---*>Initialisiere Extra Rout
		move.l	#EXTRAS_NaturStrukture,EXTRAS_Tab_Adr(a4)
		and	#$fff0,Bob_X_Position(a4)
		addq	#8,Bob_X_Position(a4)
		move	Bob_X_Position(a4),d5
		and	#%1111111111110000,d5
		move	Bob_Y_Position(a4),d6
		add	#32,d6
		move	d6,d4
		moveq	#0,d7
		*--Count Loop
.Count_Loop		move	d5,d0
		move	d6,d1
		jsr	Get_Block_Bits
		add	d0,d0
		add	d0,d0
		move.l	Scr_Block_EntryAdrs(a6),a1
		move.l	(a1,d0),a1
		cmp.b	#boden,Block_Through(a1)
		beq.s	.Get_Entries
		addq	#1,d7
		add	#16,d6
		bra.s	.Count_Loop
.Get_Entries	*--get d7 Entrys
		move	d7,d0
		lsl	#4,d0
		move	d0,Klappe_Pass_Height(a4)
		move	d7,d0
		;jsr	Get_Entry_Adrs_HI
		jsr	Get_Entry_Adrs_Back
		tst	d0
		bne	.End_Blume
		*--Init LoopCounter
		subq	#1,d7
		*--Init Values
		move	d4,d6
		lea	Area_Enter_Vector(a6),a1
		lea	ENTRY_ADRS(a6),a0
		move.l	a4,a5
		move.l	a4,-(sp)
		addq	#4,d5
		*--Lampen eintragen und verkettete Liste herstellen
.Enter_Loop		move	#S_EXTRALAMP,d0
		move	d5,d1
		move	d6,d2
		move.l	(a0)+,a4
		jsr	ENTER_BOB
		move.l	#EXTRAS_NaturStrukture,EXTRAS_Tab_Adr(a4)
		move.l	#Lamp_Wait_AnimNa,Bob_Next_Anim(a4)
		move.l	a5,Lamp_Prev_Entry(a4)
		move.l	a4,a5
		add	#16,d6
		dbf	d7,.Enter_Loop

.FoundBoden		move.l	(sp)+,a4
		move.l	a5,Klappe_last_Entry(a4)
		move.b	#2,Lamp_Speed_Sub(a4)
		*--Init Rout 
		move	Bob_Number(a4),d0
		sub	#S_EXTRAK_01,d0
		mulu	#EXTRA_LENGTH,d0
		lea	RAM_Extras(a6),a0
		add	d0,a0
		tst	(a0)
		bmi.s	.Init_Done
		*--Init Fresh
		move.l	#Extra_Rout,Bob_Routine(a4)
		move.l	#Extra_Wait_AnimNa,Bob_Next_Anim(a4)
		move.l	#I_Spuck_RoutGl2,Klappe_Spuck_Rout(a4)
		rts
.Init_Done		*--*>Init Done
		move.l	#Extra_Rout,Bob_Routine(a4)
		move.l	#Extra_Open_Anim_CntNa,Bob_Next_Anim(a4)
		move.l	#RoutRts,Klappe_Spuck_Rout(a4)
		rts
.End_Blume		*--*>END Luke -> No Entries found
		jsr	Out_Bob
		rts

**************************************************************************************
*-------------------------------------------------------------------------------------
*------------	EXTRASYSTEM-SPUCKROUTS
*-------------------------------------------------------------------------------------
I_Spuck_RoutGl2:	*--*>Init Rout which Handles Spuck 1
		move.l	#Spuck_RoutGl2,Klappe_Spuck_Rout(a4)
		move.b	#9,Klappe_Open_Klappe(a4)
		move.b	#5,Klappe_Spuck_Timer(a4)
		*--*>Clear Entry
		move	Bob_Number(a4),d0
		sub	#S_EXTRAK_01,d0
		mulu	#EXTRA_LENGTH,d0
		lea	RAM_Extras(a6),a0
		add	d0,a0
		move.l	#-1,(a0)+
		move.l	a0,Akt_Klappe_A0_Pos(a4)
		rts
Spuck_RoutGl2:	*---*>Rout which Handles Spuck Gems
		cmp.b	#1,Klappe_Open_Klappe(a4)
		beq.s	.EndUsw
		subq.b	#1,Klappe_Open_Klappe(a4)
		rts
.EndUsw		tst.b	Klappe_Spuck_Timer(a4)
		bne.s	.NoEnd
		move.l	#RoutRts,Klappe_Spuck_Rout(a4)
		clr.b	Klappe_Open_Klappe(a4)
		move.l	#Extra_Open_Anim_CntNa,Bob_Next_Anim(a4)
		rts
.NoEnd		*---*>Sub And test Spuck
		cmp.l	#Extra_Open_CmpNa,Bob_Next_Anim(a4)
		bne.s	.NoGem
		subq.b	#1,Klappe_Spuck_Timer(a4)
		move.b	#9,Klappe_Open_Klappe(a4)
		bra.s	.Make_Spuck_Gem
.NoGem		rts
.Make_Spuck_Gem	*---*>Choose Zuffi Tab
		jsr	Get_Zuffi_d0
		and	#7,d0
		lea	E1Flugbahn_Tab(pc),a2
		lsl	#3,d0
		add	d0,a2
		*--*>Make_SpuckGem
		move.l	Akt_Klappe_A0_Pos(a4),a0
		move	(a0)+,d0
		move.l	a0,Akt_Klappe_A0_Pos(a4)
		movem.l	d3/d4/d7/a0,-(sp)
		moveq	#-4,d3
		moveq	#-14,d4
		jsr	EnterExtraObjekt
		IFEQ	SOUNDFX
		moveq	#16,d0
		jsr	TFMX+16
		ENDC
		movem.l	(sp)+,d3/d4/d7/a0
		rts

*-------------------------------------------------------------------------------------
I_Spuck_RoutGl1	*--*>Init Rout which Handles Spuck 1
		move.l	#Spuck_RoutGl1,Klappe_Spuck_Rout(a4)
		move.b	#9,Klappe_Open_Klappe(a4)
		move.b	#3,Klappe_Spuck_Timer(a4)
		rts
Spuck_RoutGl1	*--*>Rout which Handles Spuck Gems
		subq.b	#1,Klappe_Spuck_Timer(a4)
		beq.s	.Make_Spuck_Gem
		rts
.Make_Spuck_Gem	move.l	#RoutRts,Klappe_Spuck_Rout(a4)
		IFEQ	SOUNDFX
		moveq	#11,d0
		jsr	TFMX+16
		ENDC
		clr.b	Klappe_Open_Klappe(a4)
		*--*>Clear Entry
		move	Bob_Number(a4),d0
		sub	#S_EXTRAK_01,d0
		mulu	#EXTRA_LENGTH,d0
		lea	RAM_Extras(a6),a0
		add	d0,a0
		move.l	#-1,(a0)+

		*--*>Enter Smoke
		moveq	#-18,d3
		moveq	#6,d4
		jsr	ENTER_SMOKE_Y_Offs
		moveq	#-18,d3
		moveq	#6,d4
		jsr	ENTER_SMOKE_X_Offs

		jsr	Get_Zuffi_d0
		and	#7,d0
		lea	EFlugbahn_Tab(pc),a2
		lsl	#3,d0
		add	d0,a2
		moveq	#5-1,d7
		*--*>Choose Gem to Spuck
.Extra_Enter_Loop	move	(a0)+,d0
		movem.l	d3/d4/d7/a0,-(sp)
		moveq	#0,d3
		moveq	#8,d4
		jsr	EnterExtraObjekt
		movem.l	(sp)+,d3/d4/d7/a0
		dbf	d7,.Extra_Enter_Loop
		rts

**************************************************************************************
*-------------------------------------------------------------------------------------
*------------	EXTRASYSTEM-GLOBALS
*-------------------------------------------------------------------------------------
Lamp_Prev_Entry	=Bob_Koords_Save1	;LW
Lamp_Init_Blink	=Bob_Special_1	;B
Lamp_Speed_Sub	=Bob_Special_1+1	;B
Lamp_Anf_Delay	=Bob_Special_2	;B
Lamp_On_Flag	=Bob_Special_2+1	;B
*---------------------------------------------------------------------------
LAMPEFLG		=-2
LUKEFLG		=-1
*---------------------------------------------------------------------------
Lamp_Rout		*--*>Test Which Standart Routs
		tst.b	Lamp_On_Flag(a4)
		beq.s	.Test_On_Lamp_Rout
		*--*>Standart Routs Lamp On
		jsr	Animate_Extra_Ausl
		move.l	EXTRAS_Tab_Adr(a4),a0
		move.l	ExtraS_Show_Rout(a0),a0
		jsr	(a0)
		rts
.Test_On_Lamp_Rout	*--*Standart_Routs
		jsr	Standart_BobAnim
		*--*>Test if Lamp should blink 
		tst.b	Lamp_Init_Blink(a4)
		bpl.s	.No_Blink_Init
.Init_Blink		*--Test ob blinken initialisieren von Lampe oder Luke kommt
		cmp.b	#LUKEFLG,Lamp_Init_Blink(a4)
		beq.s	.Luke_Init
.Lampe_Init		*--Blinken von Lampe initialisiert
		clr.b	Lamp_Init_Blink(a4)
		move.l	EXTRAS_Tab_Adr(a4),a0
		move.l	ExtraS_LampBlinkAnim(a0),Bob_Next_Anim(a4)
		clr.w	Bob_Anim_Delay(a4)
		move.b	#1,Lamp_On_Flag(a4)
		bra	.No_Blink_Init
		rts
.Luke_Init		*--Blinken Initialisieren /Delay/Temet Speed
		clr.b	Lamp_Init_Blink(a4)
		move.b	#1,Lamp_On_Flag(a4)
		lea	(a6),a2
		moveq	#0,d0
		move.b	TEMET_Speed_X(a2),d0
		tst.b	d0
		bpl.s	.Posok
		neg.b	d0
.Posok
		move.l	EXTRAS_Tab_Adr(a4),a0
		move.l	ExtraS_DelayTab(a0),a1
		add	d0,a1
		moveq	#0,d0
		move.b	(a1),d0
		move.b	d0,Lamp_Anf_Delay(a4)
		move	d0,Bob_Anim_Delay_Init(a4)
		move.l	ExtraS_LampBlinkAnim(a0),Bob_Next_Anim(a4)
		clr.w	Bob_Anim_Delay(a4)
		;bra	.No_Blink_Init

.No_Blink_Init	*--*>SHOW IT
		move.l	EXTRAS_Tab_Adr(a4),a0
		move.l	ExtraS_Show_Rout(a0),a0
		jsr	(a0)
		rts
*-------------------------------------------------------------------------------------
Animate_Extra_Ausl	*--Animation
		subq	#1,Bob_Anim_Delay(a4)
		bpl.s	.NoNew_Anim
		move	Bob_Anim_Delay_Init(a4),Bob_Anim_Delay(a4)
		jsr	Get_Next_Ausl_Frame
.NoNew_Anim		rts
*-------------------------------------------------------------------------------------
Get_Next_Ausl_Frame	*--*>Test if End of Table is reached
		move.l	Bob_Next_Anim(a4),a1
		cmp	#ENTRY_END,Bob_A_Table_End(a1)
		bne	.Get_New_Vals
		*--*>Go to Anf of Table and Init New Lamp
		move.l	Bob_A_Table_Cont(a1),Bob_Next_Anim(a4)
		move.l	Bob_Next_Anim(a4),a1
		*--Test if New Lamp should be initialized
		moveq	#0,d0
		move.b	Lamp_Anf_Delay(a4),d0
		cmp	Bob_Anim_Delay_Init(a4),d0
		bne.s	.NoInitFurtherLamp
		*- - - - - - - - - - - - - - - - -
		*--Init_Further Lamp
		move.l	Lamp_Prev_Entry(a4),a5
		move.b	Lamp_Speed_Sub(a4),d1
		move.b	Bob_Anim_Delay_Init+1(a4),d2
		cmp	#S_EXTRAK_01,Bob_Number(a5)
		blo.s	.TestDelay
		cmp	#S_EXTRAK_19,Bob_Number(a5)
		bhi.s	.TestDelay
		*--Ist Klappe
		bra.s	.NoTestDelay
.TestDelay
		IFEQ	SOUNDFX
		moveq	#15,d0
		jsr	TFMX+16
		ENDC
		add.b	d1,d2
		cmp.b	#8,d2
		bhs.s	.NoInitFurtherLamp
.NoTestDelay	move.b	d2,Bob_Anim_Delay_Init+1(a5)
		move.b	d2,Lamp_Anf_Delay(a5)
		move.b	Lamp_Speed_Sub(a4),d1
		move.b	d1,Lamp_Speed_Sub(a5)
		move.b	#LAMPEFLG,Lamp_Init_Blink(a5)
		clr.b	Lamp_On_Flag(a5)
		*- - - - - - - - - - - - - - - - -
.NoInitFurtherLamp	addq	#1,Bob_Anim_Delay_Init(a4)
		cmp	#8,Bob_Anim_Delay_Init(a4)
		blo.s	.Get_New_Vals
		*- - - - - - - - - - - - - - - -
.Stop_Blink		*--Testen obBlinken ausstellen
		move	#$8,Bob_Anim_Delay_Init(a4)
		move.l	EXTRAS_Tab_Adr(a4),a0
		move.l	ExtraS_LampWaitAnim(a0),Bob_Next_Anim(a4)
		clr.w	Bob_Anim_Delay(a4)
		clr.b	Lamp_On_Flag(a4)
		clr.b	Lamp_Init_Blink(a4)
		;rts
		*- - - - - - - - - - - - - - - -
.Get_New_Vals	*--Enter new Values
		move.w	Bob_A_Table_Flip(a1),Bob_FlipStatus(a4)
		move.l	Bob_A_Table_Sigel(a1),Bob_SigelInfo(a4)
		move	Bob_A_Table_X_Off(a1),Bob_X_Offset(a4)
		move	Bob_A_Table_Y_Off(a1),Bob_Y_Offset(a4)
		add.l	#BOB_A_ENTRY_SIZE,Bob_Next_Anim(a4)
		rts
*-------------------------------------------------------------------------------------
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Extra_Rout	*--*>Standart Routs
		jsr	Test_Bob_Out
 		*--*>Test if Lamps should be outed
		cmp.b	#BOB_FALSE,Bob_Used(a4)
		bne.s	.No_Out_Lamps
		*--Get last Lamp
		move.l	Klappe_last_Entry(a4),a5
.OutLoop	move.b	#BOB_FALSE,Bob_Used(a5)
		move.l	Lamp_Prev_Entry(a5),a5
		cmp.b	#BOB_FALSE,Bob_Used(a5)
		bne.s	.OutLoop
		rts
.No_Out_Lamps	*--*>Standart Routs
		jsr	Standart_BobAnim
		move.l	EXTRAS_Tab_Adr(a4),a0
		move.l	ExtraS_Show_Rout(a0),a0
		jsr	(a0)

		*--*>Test if Temet passed Lamps
		tst.b	Klappe_Open_Klappe(a4)
		bmi.s	.InitOpen
		beq.s	.TestTemet_Passes
		*--Open Initialized
		move.l	Klappe_Spuck_Rout(a4),a0
		jsr	(a0)
		bra.s	.TestTemet_Passes
		rts
.InitOpen		*--*>Init Open Klappe
		cmp.l	#RoutRts,Klappe_Spuck_Rout(a4)
		beq.s	.NoInitOpen
		move.b	#1,Klappe_Open_Klappe(a4)
		move.l	EXTRAS_Tab_Adr(a4),a0
		move.l	Extra_Open_Anim(a0),Bob_Next_Anim(a4)
		clr.w	Bob_Anim_Delay(a4)
.NoInitOpen		rts

.TestTemet_Passes
		*--*>Test if Temet Passes Lamp
		lea	(a6),a2
		move	Bob_X_Position(a4),d0
		move	Bob_Y_Position(a4),d1
		add	#32,d1
		sub	TEMET_X_Position(a2),d0
		sub	#16,d0
		sub	TEMET_Y_Position(a2),d1
		sub	#40,d1
		*--Test if Y is to far away
		tst	d1
		bpl.s	.Temet_Up
.Temet_Down		*--Temet is down
		neg	d1
		cmp	Klappe_Pass_Height(a4),d1
		bhs.s	.NoDrehInitClr
		bra.s	.TestDrehInit
.Temet_Up	*--Temet is up
		cmp	#24,d1
		bhs.s	.NoDrehInitClr

.TestDrehInit	*--Test X
		tst	d0
		bpl.s	.Temet_Left
.Test_Temet_In	*--Test if Temet is in Klappe
		add	#32,d0
		bmi.s	.Temet_Right
		*--Temet is In
		move.b	TEMET_Dir_X+1(a2),Timet_in_Klappe(a4)
		rts
.Temet_Left	*--Temet is Left
		tst.b	Timet_in_Klappe(a4)
		bpl.s	.NoDrehInitClr
		tst	TEMET_Dir_X(a2)
		bmi.s	.DrehInit
		bra.s	.NoDrehInitClr
		rts
.Temet_Right	*--Temet is Right
		tst.b	Timet_in_Klappe(a4)
		beq.s	.NoDrehInitClr
		bmi.s	.NoDrehInitClr
		tst	TEMET_Dir_X(a2)
		bpl.s	.DrehInit
		bra.s	.NoDrehInitClr
		rts
.DrehInit		*--*>Dreh Init
		move.l	Klappe_last_Entry(a4),a5
		clr.b	Timet_in_Klappe(a4)
		move.b	#LUKEFLG,Lamp_Init_Blink(a5)
		move.b	Lamp_Speed_Sub(a4),Lamp_Speed_Sub(a5)
		rts
.NoDrehInitClr	clr.b	Timet_in_Klappe(a4)
.NoDrehInit		rts
*-------------------------------------------------------------------------------------
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EnterExtraObjekt	*--Enter Gem
		lea	Area_Enter_Vector(a6),a1
		move	Bob_X_Position(a4),d1
		add	d3,d1
		move	Bob_Y_Position(a4),d2
		add	d4,d2
		move.l	a4,-(sp)
		jsr	Search_Bob_Entry
		tst	d0
		bmi.s	.NoEntry_Found
.Choose_Flug	*--Choose Which Flugbahn
		move.l	Bob_Routine(a4),Extra_Init_Rout(a4)
		move.l	#Extra_Rout_Falling,Bob_Routine(a4)
		move.l	(a2)+,Gem_X_Speed(a4)
		move.l	(a2)+,Gem_Y_Speed(a4)
.NoEntry_Found	move.l	(sp)+,a4
		rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EFlugbahn_Tab	dc.l	$00028000,$ffff0000
		dc.l	$fffd0000,$fffe0000
		dc.l	$00040000,$ffff0000
		dc.l	$fffe0000,$fffb0000
		dc.l	$00020000,$fffd0000
		dc.l	$00000000,$fffc0000
		dc.l	$00018000,$ffff0000
		dc.l	$fffd8000,$fffe0000

		dc.l	$00028000,$ffff0000
		dc.l	$fffd0000,$fffe0000
		dc.l	$00040000,$ffff0000
		dc.l	$fffe0000,$fffb0000
		dc.l	$00020000,$fffd0000
		dc.l	$00000000,$fffc0000
		dc.l	$00018000,$ffff0000
		dc.l	$fffd8000,$fffe0000

E1Flugbahn_Tab	dc.l	$00028000,$fffc0000
		dc.l	$fffd0000,$fffb0000
		dc.l	$00040000,$fffa0000
		dc.l	$fffe0000,$fffb0000
		dc.l	$00020000,$fffc0000
		dc.l	$00000000,$fffb0000
		dc.l	$00018000,$fffc0000
		dc.l	$fffd8000,$fffa0000

		dc.l	$00028000,$fffc0000
		dc.l	$fffd0000,$fffb0000
		dc.l	$00040000,$fffa0000
		dc.l	$fffe0000,$fffb0000
		dc.l	$00020000,$fffc0000
		dc.l	$00000000,$fffb0000
		dc.l	$00018000,$fffc0000
		dc.l	$fffd8000,$fffa0000


**************************************************************************************
	ENDC